我在哪里保存Zend_Form文件?

时间:2012-09-07 21:56:12

标签: php file zend-framework zend-form structure

我正在尝试学习Zend Framework!我对此很感兴趣,但我找不到一个教程,说明它被保存为Zend_Form类的存储位置!也许这是非常简单的事情,但我还不能得到它...... 我见过关于此的教程:

<?php
 class Form_Example extends Zend_Form
 {
  public function init()
  {
   // Great code here
  }
 }

但他们都没有说这段代码在哪里?在目录树中的文件夹中的文件?我已阅读并理解并且我已经完成了模块,控制器,操作,布局的一些示例,并且我知道名称约定和文件夹结构的重要性。那么这个表格类必须去哪里?如何从视图中调用它?

非常感谢,我知道对于已经知道如何与Zend Framework合作的人来说这一定很容易=)

3 个答案:

答案 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)

问题的核心是以下问题:

  1. 自动加载
  2. ZF autoloader如何正常工作,
  3. 默认情况下,如何在标准ZF应用中配置ZF自动加载器
  4. 实际上是三个截然不同的,虽然明显相关的问题。

    假设您已将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