allow to create a new address
This commit is contained in:
@@ -22,10 +22,13 @@
|
|||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
|
|
||||||
namespace Thelia\Action;
|
namespace Thelia\Action;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
use Thelia\Core\Event\AddressCreateOrUpdateEvent;
|
use Thelia\Core\Event\AddressCreateOrUpdateEvent;
|
||||||
use Thelia\Core\Event\TheliaEvents;
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
use Thelia\Model\Address as AddressModel;
|
use Thelia\Model\Address as AddressModel;
|
||||||
|
use Thelia\Model\Map\AddressTableMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Address
|
* Class Address
|
||||||
@@ -52,32 +55,41 @@ class Address extends BaseAction implements EventSubscriberInterface
|
|||||||
protected function createOrUpdate(AddressModel $addressModel, AddressCreateOrUpdateEvent $event)
|
protected function createOrUpdate(AddressModel $addressModel, AddressCreateOrUpdateEvent $event)
|
||||||
{
|
{
|
||||||
$addressModel->setDispatcher($this->getDispatcher());
|
$addressModel->setDispatcher($this->getDispatcher());
|
||||||
|
$con = Propel::getWriteConnection(AddressTableMap::DATABASE_NAME);
|
||||||
|
$con->beginTransaction();
|
||||||
|
try {
|
||||||
|
if ($addressModel->isNew()) {
|
||||||
|
$addressModel->setLabel($event->getLabel());
|
||||||
|
}
|
||||||
|
|
||||||
if ($addressModel->isNew()) {
|
$addressModel
|
||||||
$addressModel->setLabel($event->getLabel());
|
->setTitleId($event->getTitle())
|
||||||
|
->setFirstname($event->getFirstname())
|
||||||
|
->setLastname($event->getLastname())
|
||||||
|
->setAddress1($event->getAddress1())
|
||||||
|
->setAddress2($event->getAddress2())
|
||||||
|
->setAddress3($event->getAddress3())
|
||||||
|
->setZipcode($event->getZipcode())
|
||||||
|
->setCity($event->getCity())
|
||||||
|
->setCountryId($event->getCountry())
|
||||||
|
->setCellphone($event->getCellphone())
|
||||||
|
->setPhone($event->getPhone())
|
||||||
|
->setCompany($event->getCompany())
|
||||||
|
->save()
|
||||||
|
;
|
||||||
|
|
||||||
|
if($event->getIsDefault()) {
|
||||||
|
$addressModel->makeItDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
$event->setAddress($addressModel);
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
} catch(PropelException $e) {
|
||||||
|
$con->rollback();
|
||||||
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
$addressModel
|
|
||||||
->setTitleId($event->getTitle())
|
|
||||||
->setFirstname($event->getFirstname())
|
|
||||||
->setLastname($event->getLastname())
|
|
||||||
->setAddress1($event->getAddress1())
|
|
||||||
->setAddress2($event->getAddress2())
|
|
||||||
->setAddress3($event->getAddress3())
|
|
||||||
->setZipcode($event->getZipcode())
|
|
||||||
->setCity($event->getCity())
|
|
||||||
->setCountryId($event->getCountry())
|
|
||||||
->setCellphone($event->getCellphone())
|
|
||||||
->setPhone($event->getPhone())
|
|
||||||
->setCompany($event->getCompany())
|
|
||||||
->save()
|
|
||||||
;
|
|
||||||
|
|
||||||
if($event->getIsDefault()) {
|
|
||||||
$addressModel->makeItDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
$event->setAddress($addressModel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class Address extends BaseAddress {
|
|||||||
{
|
{
|
||||||
|
|
||||||
AddressQuery::create()->filterByCustomerId($this->getCustomerId())
|
AddressQuery::create()->filterByCustomerId($this->getCustomerId())
|
||||||
->update(array('isDefault' => '0'));
|
->update(array('IsDefault' => '0'));
|
||||||
|
|
||||||
$this->setIsDefault(1);
|
$this->setIsDefault(1);
|
||||||
$this->save();
|
$this->save();
|
||||||
|
|||||||
247
templates/default/address.html
Normal file
247
templates/default/address.html
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
{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">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">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" class="active"><span itemprop="title">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.create"}
|
||||||
|
<form id="form-address" class="form-horizontal" action="{url path="/address/create"}" 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}" 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"}
|
||||||
|
<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="country.list"}
|
||||||
|
<option value="{$ID}" {if $value == $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}" 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}" 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}" 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}" 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}" 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}" 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"}
|
||||||
|
<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 $value == $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}" 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}" 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"> {$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>
|
||||||
|
{/form}
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</div><!-- /.layout -->
|
||||||
|
{/block}
|
||||||
Reference in New Issue
Block a user