2014-12-15 17 views
9

Theo số official tutorial của Yii2. Tôi đã tạo chế độ xem cho biểu mẫu nhập:Yii2 ActiveForm không hoạt động

<?php 
    use yii\helpers\Html; 
    use yii\widgets\ActiveForm; 
    ?> 
    <?php $form = ActiveForm::begin(); ?> 
<!-- GET Attention for the next Line --> 
    <?= $form->field($model, 'name')->label('Your Name'); ?> 
    <?= $form->field($model, 'email'); ?> 
    <div class="form-group"> 
     <?= Html::submitButton('Send!', ['class' => 'btn btn-primary']); ?> 
    </div>  
    <?php ActiveForm::end(); ?> 

Tại thời điểm này mọi thứ đều ổn. Tuy nhiên, khi tôi cố gắng sử dụng các tham số options của phương pháp field như sau:

<?= $form->field($model, 'name', ['style' => 'color:red'])->label('Your Name'); ?> 

Tôi đã nhận lỗi:

Unknown Property – yii\base\UnknownPropertyException

Setting unknown property: yii\widgets\ActiveField::style

The official api documentation nói rằng phương pháp ActiveForm mất một tham số thứ ba được gọi là tùy chọn

Ai có thể giải thích cho tôi tại sao lỗi này đã xảy ra ?!

Trả lời

10

Hãy thử

<?= $form->field($model, 'name')->textInput(['style' => 'color:red'])->label('Your Name'); ?> 

Nó là một chút khó khăn để giải thích, khi bạn làm $form->field($model, 'name') mà không chỉ định các loại lĩnh vực bạn đang thực sự yêu cầu cho một textinput. Nhưng điều đó không có nghĩa là bạn nên yêu cầu từ ->field( để lấy các thông số tương tự như ->textInput(. Nếu bạn cần phải đặt một số params đặc biệt đối với lĩnh vực này, bạn phải sử dụng rõ ràng ->textInput(['style' => 'color:red'])

+0

Cuộc thảo luận tài liệu chính thức về thông số thứ ba "tùy chọn". Nhưng nó không giải thích những gì có thể được xác định bằng cách sử dụng nó. :( – webpaul

+0

Bạn nói đúng, cần phải có tài liệu tốt hơn. Tôi có thể thêm một số thứ vào tuần tới. –

3

Hãy thử mã này:

<?= $form->field($model, 'name', [ 'options' => [ 'style' => 'color: red']])->label('Your Name'); ?> 

Bạn đã có lỗi này

Unknown Property – yii\base\UnknownPropertyException 

Setting unknown property: yii\widgets\ActiveField::style 

vì không có kiểu thuộc tính như vậy. Bạn nên sử dụng 'tùy chọn' và chuyển 'kiểu' làm mảng phụ

Các vấn đề liên quan