我正在尝试学习Zend Framework!我对此很感兴趣,但我找不到一个教程,说明它被保存为Zend_Form类的存储位置!也许这是非常简单的事情,但我还不能得到它...... 我见过关于此的教程:
<?php
class Form_Example extends Zend_Form
{
public function init()
{
// Great code here
}
}
但他们都没有说这段代码在哪里?在目录树中的文件夹中的文件?我已阅读并理解并且我已经完成了模块,控制器,操作,布局的一些示例,并且我知道名称约定和文件夹结构的重要性。那么这个表格类必须去哪里?如何从视图中调用它?
非常感谢,我知道对于已经知道如何与Zend Framework合作的人来说这一定很容易=)
答案 0 :(得分:2)
我通常将所有表单放在表单文件夹中,以及模型,控制器和视图。
所以,我的文件结构如下:
application ->
configs
layouts
plugins
controllers
models
views
forms ->
form1.php
form2.php
在您的应用程序中使用它们并不是那么简单。您必须在控制器中实例化表单类,然后将表单传递给您的视图。因此,在您的控制器中,您需要以下内容:
$form1 = new Application_Form_Form1($options);
$request = $this->getRequest();
if($request->isPost()) {
if($form1->isValid($post)) {
// form is valid, do form processing here
}
}
$this->view->form1 = $form1;
然后在视图文件中放置表单:
<html>
<body>
<div id="body">
<?php echo $this->form1; ?>
</div>
</body>
</html>
答案 1 :(得分:2)
这样做的最好方法是让ZF为你做。 ZF附带了Windows和* nix的命令行界面。
在命令行中,您可以键入zf create form Example
,然后ZF将在其默认应用程序级别位置创建一个名为Example.php
的空表单。
通常情况下,这将是application/forms/Example.php
,类名将为Application_Form_Example
。
如果您需要在模块中构建表单,则命令类似:
zf create form Example -m admin
其中-m
表示您希望在模块中创建文件,admin
是模块的名称。
表单是Zend Framework中的预定义资源之一,因此具有默认位置。还有其他几种预定义且具有默认值的资源。
<强> The Module Resource Autoloader 强>
Zend Framework附带了一个具体的实现 包含资源类型映射的Zend_Loader_Autoloader_Resource 它涵盖了Zend的默认推荐目录结构 框架MVC应用程序。这个装载机, Zend_Application_Module_Autoloader附带以下映射:
forms/ => Form
models/ => Model
models/DbTable/ => Model_DbTable
models/mappers/ => Model_Mapper
plugins/ => Plugin
services/ => Service views/
helpers => View_Helper
filters => View_Filter
例如,如果您有一个前缀为“Blog_”的模块,并尝试实例化该类 “Blog_Form_Entry”,它会查看资源目录中的“表单/” 名为“Entry.php”的文件的子目录。使用模块时 使用Zend_Application的bootstrap,一个实例 默认情况下将为每个创建Zend_Application_Module_Autoloader 离散模块,允许您自动加载模块资源。
答案 2 :(得分:2)
问题的核心是以下问题:
实际上是三个截然不同的,虽然明显相关的问题。
假设您已将appnamespace
设置为“Application”的默认ZF安装,请将表单类命名为Application_Form_Example
并将其存储在文件application/forms/Example.php
中。
然后你可以使用:
实例化(例如在控制器中) $form = new Application_Form_Example()
。
确保resources.modules[] =
中有application/configs/application.ini
。
有关自动加载的其他讨论,请参阅https://stackoverflow.com/a/10933376/131824