2015-04-27 153 views
3

我在爾康框架初學者,我要驗證表單元素在.volt表單元素驗證(檢查是否元素存在)

我有,我編寫期間隱藏備案編輯目的一種形式的類文件,我存儲記錄的ID隱申請時,其在編輯模式下,當我渲染這個隱藏在add.volt

{{ form.render('tax_categories_id')}} 
申請

if ($options["edit"] == 1) { 
     // $tax_categories_id = new Hidden("tax_categories_id"); 
     $this->add(new Hidden('tax_categories_id')); 
     //$this->add($tax_categories_id); 
    } 

的問題是點

及其在編輯模式時工作正常,但在新的記錄時間的報錯

爾康\表格\例外:元素與ID = tax_categories_id不是形式

我知道的一部分爲什麼錯誤來了,但我無法驗證這個字段.volt文件

回答

1

在控制器中,你可以設置你的$ options變量,然後檢查它的視圖內?

//controller.php 
$this->view->setVar('options', $options); 


//view.volt 
{% if options['edit'] %} 
    {{ form.render('tax_categories_id')}} 
{% endif %] 
0

假設你已經裝箱了接近:

<?php 

use Phalcon\Forms\Form, 
    Phalcon\Forms\Element\Text, 
    Phalcon\Forms\Element\Hidden; 

class UsersForm extends Form 
{ 
    public function initialize($options = []) 
    { 
     if (isset($options['edit']) && $options['edit']) { 
      $this->add(new Hidden('id')); 
     } 

     $this->add(new Text('name')); 
    } 
} 

所以!根據選項,您可能會聲明一個字段,或者兩個字段。現在,如果有人向你這種形式回來,進行驗證,你必須用正確的$options['edit']再設置它,取決於如果您有$_REQUEST['id']申報或不上:

$form = null; 
if(isset($_REQUEST['id'])) { 
    $form = new UsersForm(); 
} else { 
    $form = new UsersForm(['edit' => true]); 
} 

$form->bind($_REQUEST); 
if($form->isValid()) { 
    //... 
} 

相當先進的(但也有一些差距反正)手冊是here。打賭你已經在那裏,但以防萬一。

順便說一句,表單迭代器是可遍歷的,所以你可以遍歷它們來渲染只聲明的元素。寫這個,因爲你已經把{{ form.render('tax_categories_id')}}作爲例子,這讓我覺得你正在手動生成字段。

1

只是檢查,如果該元素是存在

// add.volt 
{% if form.has('tax_categories_id') %} 
    {{ form.render('tax_categories_id') }} 
{% endif %}