【问题标题】:Extbase view variable not gettingExtbase 视图变量没有得到
【发布时间】:2016-10-24 06:00:41
【问题描述】:
/**
 * New post form
 * @param  \Vendor\My\Domain\Model\Post|null $newPost New post
 * @return void
 * @dontvalidate $newPost
 */
public function newAction(\Vendor\My\Domain\Model\Post $newPost = NULL) {
    $this->view->assign('test', 'hello');
    $this->view->assign('categoryList', $this->categoryRepository->findAllByBlog(0));
    $this->view->assign('postObject', $newPost);
}

public function editAction() {
    $this->view->assign('categoryList', $this->categoryRepository->findAllByBlog(0));
    $postObject = $this->postRepository->findOneByUid($this->request->getArgument('id'));
    $this->view->assign('postObject', $postObject);

}

这是我的脚本,我的问题是我有一个 categoryList 数组,它只进入编辑视图。我想在 newaction 上使用该类别列表。当我尝试在新的操作视图文件中搜索该数组时,它变得空了。我可以在保存 postObject 后得到它。关于这个特殊问题的任何想法?来自 newaction 的变量测试在 newAction 模板文件中也不可见。

我正在使用 Typo3 7.6.11

【问题讨论】:

  • 愚蠢的问题:更改后是否清除 T3 缓存? <f:debug>{_all}</f:debug> 看到了什么?
  • 是的,什么都试过了。我只能在控制器操作中看到这些变量,它在视图和操作之间未设置。
  • 您是在模板中还是部分地访问这些变量?在第二种情况下,您可能不会通过 arguments 将所有变量传递给部分变量。
  • 伙计,在我的问题中,您可以看到 new 和 editAction,两者都使用相同的模板,只是编辑、添加标签正在更改,而我使用的是部分,并传递了所有参数,这些值在编辑视图(模板和部分)上正确获取,但是从 newAction 呈现该视图时它不起作用。

标签: typo3 typoscript fluid extbase typo3-7.6.x


【解决方案1】:

声明您想要接收的参数,作为控制器操作的参数。当您构建指向控制器操作的链接时,请在 Fluid 模板中正确引用此参数名称。不要直接从请求访问参数。也为其添加正确的 PDPdoc cmets。

基本上:用你的论点做正确的事,而不是绕过框架。此建议适用于您在 Extbase 中所做的任何事情。

注意:New 和 Edit 操作永远不应共享同一个模板(这进一步表明您绕过了框架的预期行为)。创建和新建,是的。但不是新建和编辑。如有必要,将表单 fields 放在一个部分中,并将表单本身放在单独的模板中,以便您可以正确控制操作构建和对象/对象名称设置。

【讨论】:

    【解决方案2】:

    如果$this->***Repository 方法返回NULL,则可能是存储库没有定义StoragePid

    确保 newActioneditAction 在 TypoScript 或后端插件设置 (Flexform) 中定义相同的 storagePid。

    TypoScript 看起来像这样:

    plugin.tx_extension.persistence.storagePid = 100
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-12
      • 2010-11-02
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多