gpt4 book ai didi

templates - Symfony1 模板默认值和回退或模块之间的模板共享

转载 作者:行者123 更新时间:2023-12-03 08:11:18 25 4
gpt4 key购买 nike

我在开发 Symfony1 应用程序。

对于部分应用程序,我们使用 symfony 管理生成器,它为特定模块构建默认操作和模板。

自动生成的 Action 方法可以在子 Action 类中被覆盖,模板也可以被覆盖,方法是在模块的模板文件夹中创建一个同名的模板。使用本地模板而不是自动生成的模板,这些模板存储在缓存文件夹中(我认为这是正常的 symfony 行为)。

apps/
my_app
modules/
post/
actions/
actions.class.php
lib/
templates/
...
cache/
my_app/
environment/
modules/
autoPostcd /
actions/
actions.class.php
lib/
templates/
indexSuccess.php
_part_1.php
_part_2.php

我目前正在开发一个不使用管理生成器的单独应用程序。

但我有 3 个模块做的事情非常相似,我想分享一下。

我让所有 3 个 Action 都扩展了相同的自定义 Action 类,以便它们都实现相同的方法并共享相同的方法。

我遇到的问题是共享模板。主要模板和大部分部分都可以按原样重复使用。

apps/
other_app/
lib/
printingActions.class.php
modules/
ticket/
actions/
actions.class.php
lib/
templates/
printSuccess.php //exactly the same for all 3
_part_1.php
_part_2.php //exactly the same for all 3
_part_3.php
receipt/
actions/
actions.class.php
lib/
templates/
printSuccess.php //exactly the same for all 3
_part_1.php
_part_2.php //exactly the same for all 3
_part_3.php
voucher/
actions/
actions.class.php
lib/
templates/
printSuccess.php //exactly the same for all 3
_part_1.php
_part_2.php //exactly the same for all 3
_part_3.php

我想做的是抽出通用的,这样每个模块和任何具有相似接口(interface)的 future 模块,只需要包含模块特定信息的部分。

这将是我理想的设置:

apps/
other_app/
lib/
printingActions.class.php
printingCommonTemplates/
printSuccess.php //exactly the same for all 3
_part_2.php //exactly the same for all 3
modules/
ticket/
actions/
actions.class.php
lib/
templates/
_part_1.php
_part_3.php
receipt/
actions/
actions.class.php
lib/
templates/
_part_1.php
_part_3.php
voucher/
actions/
actions.class.php
lib/
templates/
_part_1.php
_part_3.php

我知道这种事情可以做,因为管理生成器可以做到,但经过数小时的挖掘,我找不到它到底在哪里做。

有人可以为我指出正确的方向吗?理想情况下,如果有一个后备模板设置,我可以为特定模块或过滤器类设置,我可以扩展它来做我需要的事情?

最佳答案

如果您想使用具有默认布局的通用模块操作类,您可以使用以下方法:

class printingActions extends sfActions {

public function preExecute() {
$this->setLayout('print_success_common');
}

public function executeIndex() {

}
}

然后在你的模块操作中你可能有:

class ticketActions extends printingActions
{
public function executePrint(sfWebRequest $request)
{
$this->txt = 1234;
return $this->renderPartial('part_1', array('txt' => $this->txt));
}
}

您可以使用与您的操作不同的(通用)布局:

class ticketActions extends printingActions
{
public function executePrint(sfWebRequest $request)
{
$template = $this->getContext()->getConfiguration()->getTemplateDir('printing', 'print_success_common_alt.php');
$this->setLayout($template . '/print_success_common_alt');
...

$this->txt = 1234;
return $this->renderPartial('part_1', array('txt' => $this->txt));
}
}

关于templates - Symfony1 模板默认值和回退或模块之间的模板共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com