2013-12-06 3 views
0

Я новичок в структуре Yii. Я использую структуру Yii для своего приложения. Теперь данные извлекаются из файла XML, а не из базы данных. Данные, введенные в текстовое поле, также преобразуются в файл XML. Класс модели расширяет CFormModel. У меня есть текстовое поле, которое должно допускать только целые числа. Я сделал проверку переднего конца, используя Javascript, который отлично подходит для некоторых браузеров, но не для большинства. Итак, я хочу сделать проверку подлинности с помощью правил(). Как я могу написать правило проверки для этого, чтобы разрешить целые числа.
EDITYii - Как написать правила проверки для CFormModel

if (isset($_GET['TestForm']['min']) && isset($_GET['TestForm']['max'])) { 
       $test = $xml->addChild('test'); 
       $test->addChild('min', $_GET['TestForm']['min']?$_GET['TestForm']['min']:"0"); 
       $test->addChild('max', $_GET['TestForm']['max']?$_GET['TestForm']['max']:"500000000"); 

      } else { 
       $test = $xml->addChild('area'); 
       $test->addChild('min', 0); 
       $test->addChild('max', 5000000); 
      } 

EDIT 2 simplexml_load_string ошибка синтаксического анализа является предупреждение, показанное

+0

Вы можете просто разместить здесь код, чтобы мы могли видеть, что не так с вашим кодом? –

+0

Я думаю, нам, возможно, нужно увидеть всю вашу модель и xml, который вы пытаетесь проанализировать. –

ответ

1

в модели Предположим, MODELNAME является file.php * создать переменную *

public $name; 

public function rules() 
{ 
return array(
array('name','numerical', 'integerOnly' => true) 

); 
} 

в виду, когда форма создается
здесь $ модель является объектом

<div class="row"> 
     <?php echo $form->labelEx($model,'name'); ?> 
     <?php echo $form->textField($model,'name'); ?> 
     <?php echo $form->error($model,'name'); ?> 
    </div> 
+0

Это не работает ... Я пробовал то же самое ... Он показывает исключение, а не показывает его как ошибку – user3004356

+0

какое исключение он выбрасывает? –

1

Это должно сделать работу

модели/yourformmodel.php:

public function rules() { 
     return array(
      array('field', 'required'), 
      array('field', 'numerical', 'integerOnly' => true), 
     ); 
    } 
+0

Это не работает ... создает исключение вместо отображения ошибки – user3004356

+0

Можете ли вы показать исключение, которое оно бросает? – apoq

0

Первая установка:

У вас есть классическая проблема, вы хотите, чтобы убедиться, что пользователь принял условия договора, но стоимость приемки не сохраняется (оценка) в базе данных ... Итак, вы расширяете CFormModle, определяете правила и получаете подтверждение. С связанными переменными, которые вы подтвердили как часть сохранения. Теперь вы сами проверяете(), но Validate требует список атрибутов, который не определен в CFormModel. Ну так что ты делаешь? Вы можете сделать это:

$ Договор-> Validate ($> attributeNames Договор-())

Вот полный пример:

class Contract extends CFormModel 
{ 
... 
    public $agree = false; 
... 
    public function rules() 
    { 
     return array(
      array('agree', 'required', 'requiredValue' => 1, 'message' => 'You must accept term to use our service'), 
     ); 
    } 
    public function attributeLabels() 
    { 
     return array(
       'agree'=>' I accept the contract terms' 
     ); 
    } 
} 

Тогда в контроллере вы делаете это:

public function actionAgree(){ 
    $contract = new Contract; 
    if(isset($_POST['Contract'])){ 
     //$contract->attributes=$_POST['Contract']; //contract attributes not defined in CFormModel 
     ... 
     $contract->agree = $_POST['Contract']['agree']; 
     ... 
    } 
    if(!$contract->validate($contract->attributeNames())){ 
     //re-render the form here and it will show up with validation errors marked! 
    } 

enter image description here enter image description here

Смежные вопросы