【问题标题】:Load FormHelper into Controller CakePHP 1.3将 FormHelper 加载到控制器 CakePHP 1.3
【发布时间】:2012-01-24 22:06:50
【问题描述】:

所以我的问题是我知道如何将 Helper 加载到 Controller 中,但它仅适用于 HtmlHelper 而不适用于 FormHelper。

我像这样将它加载到我的方法中:

//this method is from an controller like page_controller    
function addField($pageID) {

    if($this->RequestHandler->isAjax()) {
        $this->autoRender = false;
    }

    App::import('Helper', 'Form');

    $form = new FormHelper();

    return $form->input('test');

}

我遇到了一些错误,例如无法加载未知的 stdClas::$model 等。

当我使用链接方法输出它时,HtmlHelper 运行良好,我在视图中得到了完整呈现的链接。

我不会只在 Ajax 上加载一个新的输入,但它不会工作,我不知道为什么...... 希望你能理解我的问题。

【问题讨论】:

  • 我倾向于在这里对“故意的错误编码”投反对票……但话说回来,你可能还不知道更好。请仔细阅读食谱。
  • 另外,您需要使用App::iMport 而不是App::iNport。但马克是对的,这不是要走的路。
  • 对不起,我用错了字母,我会编辑它。而且我知道这种方式是错误的,我可以找到另一种使用 MVC 的方式......这就是我要求的原因,因为我在 2 天的研究后找不到它。我不知道为什么我会得到这个答案,如果你们中有人知道这个答案,我可以找到它。我不会问我是否知道在蛋糕本中可以找到它。如果您知道如何使用并且我在哪里可以找到我的答案,请告诉我在哪里可以找到或如何正确使用的链接。我知道 MVC 模式。

标签: php cakephp cakephp-1.3 cakephp-helper


【解决方案1】:

你在那里做的事情是非常错误的。 这是有充分理由的,为什么这不会也不应该按你的方式工作。

使用文档和教程中概述的正常 MVC 过程。 http://book.cakephp.org/

在您的情况下,这意味着您需要始终使用视图模板 (/views/controllername/actionname.ctp) 并将您的表单内容放在那里。

【讨论】:

  • 我知道,但我怎么能说它不需要用标题渲染洞 html 所有这些东西。因为我只需要输入字段来呈现。假设一位用户按下了“添加输入文件”的 ajax 链接,这就是我不想渲染漏洞站点的全部内容。我怎么能意识到这一点,我去年发现了一些关于 json 如何渲染它的东西,我认为有一些东西如何放弃洞 html 主体来只渲染我需要的东西,但不知道在 cakebook 中再次找到它的位置。跨度>
  • 你似乎对自己的恶行颇有抵抗力。如果您想呈现一个完整的 html 网站或只输出一个字符,这并不重要。你总是使用视图来做到这一点。例如,您可以设置 $this->layout = 'ajax' 以避免加载任何额外的布局。所以只有这个表单域。
【解决方案2】:

更改以下代码

App::import('Helper', 'Form');

$form = new FormHelper();

进入下面的代码

App::import('Helper', 'Form');

$form = new FormHelper(new View());

然后像这样使用$form $form->input('name');

你不见了(新视图())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多