في YII ، كيف يمكنني الحصول على نموذج يحلق من خلال مجموعة من الأشياء؟
سؤال
أحاول إنشاء yii Activeform يقوم بتحرير القيم من قائمة الكائنات ، المقدمة في جدول.
الفصول المعنية:
class ResultForm extends CFormModel {
/**
* @var array[Result]
*/
public $results; //Filled with an array of Result objects
}
class Result {
public $requiredArea;
}
وجهة نظري:
<% $form = $this->beginWidget('CActiveForm'); %>
<table>
....
<% $rowCounter = 0; foreach($resultForm->results as $result): %>
...
<tr>
....
<td>
<!-- This doesn't work -->
<% $form->textField($resultForm,
"results[$rowCounter]->requiredArea") %>
<!-- Just displaying the value works -->
<%= $resultForm->results[$rowCounter]->requiredArea %>
</td>
...
</tr>
<% $rowCounter++; endforeach; %>
</table>
<% $this->endWidget(); %>
يتم تقديم حقول النص ولا تشكو yii ، لكنها لا تحتوي على القيم المناسبة.
هل هناك طريقة يمكنني من خلالها جعل هذا العمل ، أم أن هناك نهجًا أفضل للتكرار من خلال مجموعة من الأشياء في شكل؟
المحلول
أعتقد أنك تريد هذا بدلاً من ما لديك:
<% $form->textField($result,"[$rowCounter]requiredArea") %>
ما تريد القيام به هو تمرير النموذج الذي تكرره أكثر (نتيجة $) بدلاً من نموذج الوالد/النموذج ، وتريد تمرير اسم سمة هذا النموذج كمعلمة ثانية (إلى جانب قيمة $ i/ فهرس الصفيف) بدلا من السمة الفعلية.
راجع هذه الصفحة في دليل YII لمزيد من المعلومات حول الإدخال الجدولي:http://www.yiiframework.com/doc/guide/form.table
أيضًا ، تحقق من ما يفترض أن تكون المعلمات لـ Textfield ():http://www.yiiframework.com/doc/api/chtml#activetextfield-detail
في صحتك!