allow update customer address in front tempalte
This commit is contained in:
@@ -69,13 +69,14 @@
|
|||||||
<default key="_view">address</default>
|
<default key="_view">address</default>
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
<route id="address.edit" path="/address/edit/{address_id}">
|
<route id="address.edit" path="/address/update/{address_id}" methods="get">
|
||||||
<default key="_controller">Thelia\Controller\Front\DefaultController::noAction</default>
|
<default key="_controller">Thelia\Controller\Front\AddressController::updateViewAction</default>
|
||||||
<default key="_view">address-edit</default>
|
<default key="_view">address-update</default>
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
<route id="address.update" path="/address/update" >
|
<route id="address.update" path="/address/update/{address_id}" methods="post" >
|
||||||
<default key="_controller">Thelia\Controller\Front\AddressController::updateAction</default>
|
<default key="_controller">Thelia\Controller\Front\AddressController::processUpdateAction</default>
|
||||||
|
<default key="_view">address-update</default>
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
<route id="address.generateModal" path="/address/modal/{address_id}" methods="get">
|
<route id="address.generateModal" path="/address/modal/{address_id}" methods="get">
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ use Thelia\Core\Event\TheliaEvents;
|
|||||||
use Thelia\Form\AddressCreateForm;
|
use Thelia\Form\AddressCreateForm;
|
||||||
use Thelia\Form\AddressUpdateForm;
|
use Thelia\Form\AddressUpdateForm;
|
||||||
use Thelia\Form\Exception\FormValidationException;
|
use Thelia\Form\Exception\FormValidationException;
|
||||||
use Thelia\Model\Base\AddressQuery;
|
use Thelia\Model\AddressQuery;
|
||||||
use Thelia\Model\Customer;
|
use Thelia\Model\Customer;
|
||||||
use Thelia\Tools\URL;
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
@@ -93,18 +93,28 @@ class AddressController extends BaseFrontController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateAction()
|
public function updateViewAction($address_id)
|
||||||
|
{
|
||||||
|
$this->checkAuth();
|
||||||
|
|
||||||
|
$customer = $this->getSecurityContext()->getCustomerUser();
|
||||||
|
$address = AddressQuery::create()->findPk($address_id);
|
||||||
|
|
||||||
|
if(!$address || $customer->getId() != $address->getCustomerId()) {
|
||||||
|
$this->redirectToRoute("home");
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->getParserContext()->set("address_id", $address_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processUpdateAction($address_id)
|
||||||
{
|
{
|
||||||
$this->checkAuth();
|
$this->checkAuth();
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
|
|
||||||
|
|
||||||
if (null === $address_id = $request->get("address_id")) {
|
|
||||||
$this->redirectToRoute("home");
|
|
||||||
}
|
|
||||||
|
|
||||||
$addressUpdate = new AddressUpdateForm($request);
|
$addressUpdate = new AddressUpdateForm($request);
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$customer = $this->getSecurityContext()->getCustomerUser();
|
$customer = $this->getSecurityContext()->getCustomerUser();
|
||||||
|
|
||||||
@@ -131,7 +141,7 @@ class AddressController extends BaseFrontController
|
|||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$message = sprintf("Sorry, an error occured: %s", $e->getMessage());
|
$message = sprintf("Sorry, an error occured: %s", $e->getMessage());
|
||||||
}
|
}
|
||||||
|
$this->getParserContext()->set("address_id", $address_id);
|
||||||
if ($message !== false) {
|
if ($message !== false) {
|
||||||
\Thelia\Log\Tlog::getInstance()->error(sprintf("Error during address creation process : %s", $message));
|
\Thelia\Log\Tlog::getInstance()->error(sprintf("Error during address creation process : %s", $message));
|
||||||
|
|
||||||
|
|||||||
@@ -114,7 +114,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="group-btn">
|
<div class="group-btn">
|
||||||
<a href="{url path="/address/edit/{$ID}"}" class="btn btn-edit-address" data-toggle="tooltip" title="Edit this address"><i class="icon-pencil"></i> <span>{intl l="Edit"}</span></a>
|
<a href="{url path="/address/update/{$ID}"}" class="btn btn-edit-address" data-toggle="tooltip" title="Edit this address"><i class="icon-pencil"></i> <span>{intl l="Edit"}</span></a>
|
||||||
{if $DEFAULT != 1}
|
{if $DEFAULT != 1}
|
||||||
<a href="#" class="btn btn-remove-address" data-toggle="tooltip" title="Remove this address"><i class="icon-remove"></i> <span>{intl l="Cancel"}</span></a>
|
<a href="#" class="btn btn-remove-address" data-toggle="tooltip" title="Remove this address"><i class="icon-remove"></i> <span>{intl l="Cancel"}</span></a>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
250
templates/default/address-update.html
Normal file
250
templates/default/address-update.html
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
{check_auth context="front" roles="CUSTOMER" login_tpl="login"}
|
||||||
|
{extends file="layout.tpl"}
|
||||||
|
{block name="breadcrumb"}
|
||||||
|
<nav class="nav-breadcrumb" role="navigation" aria-labelledby="breadcrumb-label">
|
||||||
|
<strong id="breadcrumb-label">{intl l="You are here"}: </strong>
|
||||||
|
<ul class="breadcrumb" itemprop="breadcrumb">
|
||||||
|
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="index.php" itemprop="url"><span itemprop="title">{intl l="Home"}</span></a></li>
|
||||||
|
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">{intl l="Account"}</span></li>
|
||||||
|
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="active"><span itemprop="title">{intl l="Address"}</span></li>
|
||||||
|
</ul>
|
||||||
|
</nav><!-- /.nav-breadcrumb -->
|
||||||
|
{/block}
|
||||||
|
|
||||||
|
{block name="main-content"}
|
||||||
|
<div class="main">
|
||||||
|
|
||||||
|
<article class="col-main" role="main" aria-labelledby="main-label">
|
||||||
|
|
||||||
|
<h1 id="main-label" class="page-header">{intl l="Create New Address"}</h1>
|
||||||
|
{form name="thelia.address.update"}
|
||||||
|
{loop name="customer.update" type="address" customer="current" id="{$address_id}"}
|
||||||
|
<form id="form-address" class="form-horizontal" action="{url path="/address/update/{$address_id}"}" method="post" role="form">
|
||||||
|
{form_field form=$form field='success_url'}
|
||||||
|
<input type="hidden" name="{$name}" value="{url path="/customer/account"}" /> {* the url the user is redirected to on login success *}
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field='error_message'}
|
||||||
|
<input type="hidden" name="{$name}" value="{intl l="missing or invalid data"}" /> {* the url the user is redirected to on login success *}
|
||||||
|
{/form_field}
|
||||||
|
{form_hidden_fields form=$form}
|
||||||
|
{if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
|
||||||
|
<fieldset class="panel">
|
||||||
|
<div class="panel-heading">
|
||||||
|
{intl l="Address"}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="panel-body">
|
||||||
|
{form_field form=$form field="label"}
|
||||||
|
<div class="form-group group-label {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: <span class="required">*</span></label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$LABEL}}" id="{$label_attr.for}" class="form-control" placeholder="{intl l="Home address"}" autofocus>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="title"}
|
||||||
|
{assign var="customer_title_id" value="{$value|default:$TITLE}"}
|
||||||
|
<div class="form-group group-title {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label} <span class="required">*</span></label>
|
||||||
|
<div class="control-input">
|
||||||
|
<select name="{$name}" id="{$label_attr.for}" class="form-control" required autofocus>
|
||||||
|
<option value="">-- {intl l="Select Title"} --</option>
|
||||||
|
{loop type="title" name="title.list"}
|
||||||
|
<option value="{$ID}" {if $customer_title_id == $ID}selected{/if} >{$LONG}</option>
|
||||||
|
{/loop}
|
||||||
|
</select>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div><!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="firstname"}
|
||||||
|
<div class="form-group group-firstname {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: <span class="required">*</span></label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$FIRSTNAME}}" id="{$label_attr.for}" class="form-control" placeholder="John" required>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
<!--/.form-group-->
|
||||||
|
|
||||||
|
{form_field form=$form field="lastname"}
|
||||||
|
<div class="form-group group-lastname {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: <span class="required">*</span></label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$LASTNAME}}" id="{$label_attr.for}" class="form-control" placeholder="Doe" required>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="address1"}
|
||||||
|
<div class="form-group group-address1 {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: <span class="required">*</span></label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$ADDRESS1}}" id="{$label_attr.for}" class="form-control" placeholder="Street address" required>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="address2"}
|
||||||
|
<div class="form-group group-address2 {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: </label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$ADDRESS2}}" id="{$label_attr.for}" class="form-control" placeholder="{intl l="Complementary address"}">
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="zipcode"}
|
||||||
|
<div class="form-group group-zipcode {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: <span class="required">*</span></label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$ZIPCODE}}" id="{$label_attr.for}" class="form-control" placeholder="H2T 2V6" required>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="city"}
|
||||||
|
<div class="form-group group-city {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: <span class="required">*</span></label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$CITY}}" id="{$label_attr.for}" class="form-control" placeholder="New York" required>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="country"}
|
||||||
|
{assign var="customer_country_id" value="{$value|default:$COUNTRY}"}
|
||||||
|
<div class="form-group group-country {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label} <span class="required">*</span></label>
|
||||||
|
<div class="control-input">
|
||||||
|
<select name="{$name}" id="{$label_attr.for}" class="form-control" required>
|
||||||
|
<option value="">-- {intl l="Select Country"} --</option>
|
||||||
|
{loop type="country" name="country.list"}
|
||||||
|
<option value="{$ID}" {if $customer_country_id == $ID}selected{/if} >{$TITLE}</option>
|
||||||
|
{/loop}
|
||||||
|
</select>
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div><!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="phone"}
|
||||||
|
<div class="form-group group-phone {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: </label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$PHONE}}" id="{$label_attr.for}" class="form-control" placeholder="">
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="cellphone"}
|
||||||
|
<div class="form-group group-cellphone {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">{$label}: </label>
|
||||||
|
|
||||||
|
<div class="control-input">
|
||||||
|
<input type="text" name="{$name}" value="{$value|default:{$CELLPHONE}}" id="{$label_attr.for}" class="form-control" placeholder="">
|
||||||
|
{if $error }
|
||||||
|
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||||
|
{elseif $value != "" && !$error}
|
||||||
|
<span class="help-block"><i class="icon-ok"></i></span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
{form_field form=$form field="is_default"}
|
||||||
|
<div class="form-group group-primary">
|
||||||
|
<div class="control-input">
|
||||||
|
<div class="checkbox">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
<input type="checkbox" name="{$name}" id="{$label_attr.for}" value="1" {if $DEFAULT}checked{/if}> {$label}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
<div class="form-group group-btn">
|
||||||
|
<div class="control-btn">
|
||||||
|
<button type="submit" class="btn btn-submit">{intl l="Create"}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--/.form-group-->
|
||||||
|
</form>
|
||||||
|
{/loop}
|
||||||
|
{/form}
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</div><!-- /.layout -->
|
||||||
|
{/block}
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<ul class="breadcrumb" itemprop="breadcrumb">
|
<ul class="breadcrumb" itemprop="breadcrumb">
|
||||||
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="index.php" itemprop="url"><span itemprop="title">Home</span></a></li>
|
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="index.php" itemprop="url"><span itemprop="title">Home</span></a></li>
|
||||||
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="index.php" itemprop="url"><span itemprop="title">Account</span></a></li>
|
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="index.php" itemprop="url"><span itemprop="title">Account</span></a></li>
|
||||||
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="active"><span itemprop="title">Address</span></li>
|
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="active"><span itemprop="title">{intl l="Address"}</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav><!-- /.nav-breadcrumb -->
|
</nav><!-- /.nav-breadcrumb -->
|
||||||
{/block}
|
{/block}
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<div class="control-input">
|
<div class="control-input">
|
||||||
<select name="{$name}" id="{$label_attr.for}" class="form-control" required autofocus>
|
<select name="{$name}" id="{$label_attr.for}" class="form-control" required autofocus>
|
||||||
<option value="">-- {intl l="Select Title"} --</option>
|
<option value="">-- {intl l="Select Title"} --</option>
|
||||||
{loop type="title" name="country.list"}
|
{loop type="title" name="title.list"}
|
||||||
<option value="{$ID}" {if $value == $ID}selected{/if} >{$LONG}</option>
|
<option value="{$ID}" {if $value == $ID}selected{/if} >{$LONG}</option>
|
||||||
{/loop}
|
{/loop}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Reference in New Issue
Block a user