- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Zend_Form 组件构建一个表单,但元素的数量会有所不同。每个 Zend_Form 元素的信息都存储在数据库中(名称、选项、验证器、过滤器等)。
我正在处理的应用程序包括构建包含不同数量问题的调查。每个问题都与不同的答案数组相关联。最终,我的目标是在服务器端动态地构建单选/复选框按钮数组。
我正在寻找一种生成表单的漂亮方法,但我不确定在表单中加载模型的最佳方法。是否应该将模型加载到 Controller 中,然后直接传递(不知何故,通过参数?)到表单,还是在 Form init() 方法中加载模型更好?放置逻辑的最佳位置在哪里,应该在表单类中,还是在 Controller 中,还是在模型中?
我的想法是在数据库中获取表单元素属性(名称、规则、过滤器等),然后迭代并最终呈现表单。您如何看待这种方法?最终,元素将被动态添加(客户端),这一次,使用 AJAX 和 JavaScript 库(如 jQuery)。
以下是我通过谷歌找到的几个有用的链接,但我认为它们都回答了一个与我的问题略有不同的问题:
在构建动态表单时,服务器端:
最佳答案
我想我找到了一个可能的解决方案,它涉及传递 的数组Zend 表单元素 到 Zend Form::__construct() 方法。构造函数采用一组选项,其中一个称为“ 元素”。查看 Zend Framework 库中的源代码。
我在 Controller 中编写了一个新的私有(private)方法,称为 buildSurveyForm()。注意:作为参数传递的对象是由一个带有六个 JOIN 语句的巨大 SQL 查询构建的,从数据库中的几个表(调查、问题、答案等)中获取数据。此类的公共(public)属性之一由一系列问题组成,存储为对象(也具有公共(public)方法/属性等)。答案也一样。用于构建这些类的代码非常简单,并且不在此处讨论。
这是调查 Controller 中的代码。我复制/粘贴和编辑/删除了几行以使其更清晰:
private function buildSurveyForm(MyApp_Object_Survey $survey)
{
foreach ($survey->questions as $question)
{
$element = new Zend_Form_Element_MultiCheckbox($question->order);
$element->addMultiOptions($question->getAnswersLabels());
$element->setName($question->order);
$element->setLabel($question->title);
$elements[] = $element;
}
// Here's the trick :
$formOptions = array('elements' => $elements);
$surveyForm = new MyApp_Survey_Form($formOptions);
$urlHelper = $this->_helper->getHelper('url');
$surveyForm->setAction($urlHelper->url(array(
'controller' => 'survey',
'action' => 'vote'),
'default'
));
$surveyForm->setMethod('post');
$this->_forms['survey'] = $surveyForm;
return $this->_forms['survey'];
}
public function viewAction()
{
$surveyModel = $this->_model['survey'];
$survey = $surveyModel->getFullSurvey($this->_getParam('id'));
$survey = new MyApp_Object_Survey($survey);
// Calls above private method :
$surveyForm = $this->buildSurveyForm($survey);
$this->view->assign(array(
'surveyForm' => $surveyForm,
));
}
关于zend-framework - 使用 Zend 框架在 Zend_Form 中加载模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624457/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!