У меня есть расширение yii-пользователя и добавлен некоторый столбец в таблицу tbl_profile для регистрации. Тип регистрации являются два типа: Личные и компанияПодтвердить выбранную кнопку выбора камеры
следующие колонки добавил:
Для компании: company_name, comoany_type
Для личного: телефон
Для обоих личные и компании: мобильные, полное имя, страна, штаты, почтовый_код, адрес1, адрес2
У меня есть jquery, чтобы скрыть и отключить поле ввода формы в соответствии с выбором переключателя типа регистрации.
То же касается выбора страны для обоих типов регистрации. Два варианта: например, США и другая страна
Я смущен тем, что как я могу проверить свойство в соответствии с выбранным типом регистрации. например Если я выберу личную, отключите проверку для поля собственности компании.
Есть две модели с их собственности:
Профиль: FullName, company_name, company_type, мобильный, телефон, firstaddress, secondaddress, страна, страны, postal_code
RegistrationForm: имя пользователя, пароль , email
Я также определяю правила для этих свойств на соответствующей модели.
я попытался проверки модели, как это, но не работает:
if(isset($_POST['RegistrationForm'])) {
if($_POST['Profile']['account_type'] == 'personal')
{
//for personal account
$profile->account_type = $_POST['Profile']['account_type'];
$model->username = $_POST['RegistrationForm']['username'];
$model->password = $_POST['RegistrationForm']['password'];
$model->verifyPassword = $_POST['RegistrationForm']['verifyPassword'];
$model->email = $_POST['RegistrationForm']['email'];
$model->verifyCode = $_POST['RegistrationForm']['verifyCode'];
$model->accept = $_POST['RegistrationForm']['accept'];
$profile->fullname = $_POST['Profile']['fullname'];
$profile->phone = $_POST['Profile']['phone'];
$profile->ext = $_POST['Profile']['ext'];
$profile->mobile = $_POST['Profile']['mobile'];
if($_POST['choose_country'] == 'other')
{
$profile->country = $_POST['choose_country'];
$profile->states = $_POST['profile_states'];
$profile->postalcode = $_POST['Profile']['postalcode'];
$profile->firstaddress = $_POST['Profile']['firstaddress'];
$profile->secondaddress = $_POST['Profile']['secondaddress'];
}
if($_POST['choose_country'] == 'Nepal')
{
$profile->country = $_POST['choose_country'];
$profile->firstaddress = $_POST['Profile']['firstaddress'];
$profile->secondaddress = $_POST['Profile']['secondaddress'];
}
}
if($_POST['Profile']['account_type'] == 'company')
{
//for organization account
$profile->account_type = $_POST['Profile']['account_type'];
$model->username = $_POST['RegistrationForm']['username'];
$model->password = $_POST['RegistrationForm']['password'];
$model->verifyPassword = $_POST['RegistrationForm']['verifyPassword'];
$model->email = $_POST['RegistrationForm']['email'];
$model->verifyCode = $_POST['RegistrationForm']['verifyCode'];
$model->accept = $_POST['RegistrationForm']['accept'];
$profile->fullname = $_POST['Profile']['fullname'];
$profile->ext = $_POST['profile']['ext'];
$profile->mobile = $_POST['Profile']['mobile'];
$profile->company_name = $_POST['Profile']['company_name'];
$profile->company_type = $_POST['Profile']['company_type'];
$profile->designation = $_POST['Profile']['designation'];
if($_POST['choose_country'] == 'Nepal')
{
$profile->country = $_POST['choose_country'];
$profile->states = $_POST['Profile']['states'];
$profile->postalcode = $_POST['Profile']['postalcode'];
$profile->firstaddress = $_POST['profile']['firstaddress'];
$profile->secondaddress = $_POST['profile']['secondaddress'];
}
if($_POST['choose_country'] == 'others')
{
$profile->country = $_POST['profile']['country'];
$profile->firstaddress = $_POST['profile']['firstaddress'];
$profile->secondaddress = $_POST['profile']['secondaddress'];
}
}
//$model->attributes=$_POST['RegistrationForm'];
//$profile->attributes=((isset($_POST['Profile'])?$_POST['Profile']:array()));
if($model->validate()&&$profile->validate())
{
}
}
Проблема:
Если я выбираю кнопку личного радио и отправить форму он еще проверить COMPANY_NAME, тип компании а также для выбора страны, а затем показывает ошибки проверки. Здесь я хочу отключить проверку модели в зависимости от выбора переключателя как личного, так и фирменного типа.
что такое validateCompanyName, validateCompanyType, ValidatePersonalPhone. Нам нужно определить эти правила? или как это указано. – CodeManiac
Это имена возможных [настраиваемых методов проверки] (http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/), объявленных в вашей модели «Профиль». Вы можете использовать [предопределенные правила проверки] (http://www.yiiframework.com/wiki/56/), если они вам подходят. – Ezze
Я бы не рекомендовал использовать сценарии для этого, потому что вы больше не можете использовать сценарии 'update' и' insert', которые много используются во всем Yii. Просто напишите пользовательскую функцию проверки, которая проверяет на основе свойства registrationType. http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/ Убедитесь, что вы заглянули http://www.yiiframework.com/doc/guide/1.1/en/form.model # securing-attribute-assignments –