Во-первых, вы должны знать, что флажок должен иметь то же имя, но разные значения.поэтому я думаю, что вам больше нужны радиокнопки, чем флажки.
В любом случае, чтобы добавить поле в регистрационную форму, вам нужно внести некоторые изменения (сначала скопируйте bdd и код):
- измените HTML
- изменить структуру базы данных
- изменить PHP
1) Шаблон
<p class="textarea">
<label for="typeagri">{l s='Je suis :'}</label>
<div id="typeagri_info">
<span class="cerealier">Céréalier</span>
<input class="checkboxx" type="checkbox" value="Céréalier" id="typeagri1" name="typeagri[]">
<span class="eleveur">Éleveur</span>
<input class="checkboxx" type="checkbox" value="Éleveur" id="typeagri2" name="typeagri[]">
<span class="viticulteur">Viticulteur</span>
<input class="checkboxx" type="checkbox" value="Viticulteur" id="typeagri3" name="typeagri[]">
<span class="revendeur">Revendeur</span>
<input class="checkboxx" type="checkbox" value="Revendeur" id="typeagri4" name="typeagri[]">
<span class="autre">Autre</span>
<input class="checkboxx" type="checkbox" value="Autre" id="typeagri5" name="typeagri[]">
</div>
</p>
2) Изменение базы данных (выполнить SQL в phpmyadmin)
ALTER TABLE ps_customer
ADD COLUMN typeagri VARCHAR(250)
3) PHP изменяет
в /controllers/front/AuthController.php
find "// если тип регистрации за один шаг, мы сохраняем адрес" ипосле добавьте этот код:
$typeagris ='';
foreach(Tools::getValue('typeagri') as $t) {
$typeagris .= $t.',';
}
$customer->typeagri = $typeagris;
в /classes/Customer.php
find "public $ firstname;"и после добавления этого кода:
/** @var string typeagri */
public $typeagri;
find "'passwd' => array ('type' => self :: TYPE_STRING, 'validate' => 'isPasswd', 'required' => true,'size' => 32), "и после добавьте этот код:
'typeagri' => array('type' => self::TYPE_STRING),
очистите кэш и протестируйте свои модификации.
А для удостоверения личности:
inindentity.tpl
После:
<div class="form-group">
<label for="website">{l s='Website'}</label>
<input type="text" class="form-control" id="website" name="website" value="{if isset($smarty.post.website)}{$smarty.post.website}{/if}" />
</div>
добавьте:
<div class="form-group">
<p class="textarea">
<label for="typeagri">{l s='Je suis :'}</label>
<!--
{assign var="typeagris" value=","|explode:$smarty.post.typeagri}
{section name=i loop=$typeagris}
{$typeagris[i]}<br>
{/section}
-->
<div id="typeagri_info">
<input {if $smarty.post.typeagri|stristr:"alier"} checked=checked{/if} class="checkboxx" type="checkbox" value="Céréalier" id="typeagri1" name="typeagri[]"> <span class="cerealier">Céréalier</span>
<input {if $smarty.post.typeagri|stristr:"leveur"} checked=checked{/if} class="checkboxx" type="checkbox" value="Éleveur" id="typeagri2" name="typeagri[]"> <span class="eleveur">Éleveur</span>
<input {if $smarty.post.typeagri|stristr:"iticulteur"} checked=checked{/if} class="checkboxx" type="checkbox" value="Viticulteur" id="typeagri3" name="typeagri[]"> <span class="viticulteur">Viticulteur</span>
<input {if $smarty.post.typeagri|stristr:"evendeur"} checked=checked{/if} class="checkboxx" type="checkbox" value="Revendeur" id="typeagri4" name="typeagri[]"> <span class="revendeur">Revendeur</span>
<input {if $smarty.post.typeagri|stristr:"utre"}checked=checked{/if} class="checkboxx" type="checkbox" value="Autre" id="typeagri5" name="typeagri[]"> <span class="autre">Autre</span>
</div>
</p>
</div>
в IdentityController.php:
До:
return $this->customer;
Добавить:
$typeagris ='';
foreach(Tools::getValue('typeagri') as $t) {
$typeagris .= $t.',';
}
$customer->typeagri = $typeagris;
Если это работает, теперь вы можете сделать то же самое с переопределением (пожалуйста, посмотрите на http://doc.prestashop.com/pages/viewpage.action?pageId=51184698)
Переопределение очень важно,не смешивать нативный исходный код и ваши модификации.
Удачи