我有这样的文本字段将变为红色,如果我将属性required设置为"1",则不会让您自动提交表单:
<f:form.textfield required="1"
property="name"
class="lcapp-formwidth"/>
Run Code Online (Sandbox Code Playgroud)
现在我在textarea中搜索同样的东西...这个属性required在这里不再起作用了...什么是"最佳实践",使它成为像文本字段一样的必填字段?
<f:form.textarea property="story"
rows="3"
cols="7"
class="lcapp-formwidth" />
Run Code Online (Sandbox Code Playgroud) 我正在Symfony2 Bundle中开发AngularJS 1.4应用程序.Symfony提供"后端"(API)和Angular前端(当然).
我正在使用新的路由器并坚持使用几个指南和最佳实践示例建议的组件驱动文件夹方法.但是由于我使用gulp构建我的JS并且仅包含完整的Build-Files,因此Angular控制器无法找到其模板存在问题.
我告诉你我的解决方案,我不喜欢:
(function () {
'use strict';
angular
.module('myModule', ['ngNewRouter', 'myModule.dashboard'])
.config(TemplateMapping)
.controller('AppController', AppController);
/* @ngInject */
function AppController ($router) {
$router.config([
{ path: '/', redirectTo: '/dashboard' },
{ path: '/dashboard', component: 'dashboard' }
]);
}
/* @ngInject */
function TemplateMapping($componentLoaderProvider) {
$componentLoaderProvider.setTemplateMapping(function (name) {
return {
'dashboard': '/bundles/mybundle/templates/dashboard/dashboard.html'
}[name];
});
}
}());
Run Code Online (Sandbox Code Playgroud)
我编写了我的Angular代码,src/myBundle/Resources/js/然后将最终的Build放到最后的Build中,src/myBundle/Resources/public/然后在包含Angular应用程序的Twig模板中提供.
我现在正在做的,基本上是将我的组件的模板放在它们所属的位置(这将是src/myBundle/Resources/js/components/dashboard/仪表板示例),而是放入src/myBundle/Resources/public/templates.
我必须告诉路由器模板位于其他地方$componentLoaderProvider.setTemplateMapping().
我有两个问题:
AppController)模板的位置吗?我想从另一个扩展中呈现部分的部分.我的设置是TYPO3 7.6.14,带有流体供电的TYPO3扩展,包括VHS.
据我所知,流体ViewHelper f:render是不可能的.这里只有参数"partial"和"section".我找到了一个使用VHS ViewHelper v:render.template的解决方案.解决方案在这里解释:https://www.wapplersystems.de/blog/typo3-fluid-render-partial-from-another-extension/
但是使用这个ViewHelper,我只能设置部分路径,而不是路径.
我已经为我的自定义 TYPO3 扩展实现了 CSRF 保护(根据文档),它对未经身份验证的前端访问者和前端的后端管理员都很好地工作。我注意到的一件奇怪的事情是,如果非管理员后端用户尝试使用前端插件中的表单,则会引发错误:
PHP Catchable Fatal Error: Argument 1 passed to TYPO3\CMS\Core\FormProtection\FormProtectionFactory::getMessageClosure() must be an instance of TYPO3\CMS\Lang\LanguageService, null given
Run Code Online (Sandbox Code Playgroud)
我使用 TYPO3 V. 7.6.10 和 7.6.14 进行了测试。两个版本都会出现这个错误。
我查看了 FormProtectionFactory 中的源代码,它似乎$GLOBALS['Lang']是为 FE 中的管理员用户初始化的,但对于普通后端用户来说是空的。在 BE 中,两个用户组都可以访问其他 CSRF 保护的表单。
根据LanguageService的官方参考,LanguageService 通常只在 BE 可用:
这个类通常被实例化为全局变量 $GLOBALS['LANG'] 它只在后端可用,在某些情况下在前端可用
有谁知道这些特定情况是什么?当然可以从 BE 注销并以未经身份验证的用户身份访问表单,但这显然很烦人。我认为这是预期的行为,但我不明白为什么这个问题只发生在非管理员身上。也许有人有一个想法,如何使表单也可供 FE 中的非管理员后端用户使用?
任何帮助都受到高度赞赏。
谢谢!
为了完整起见,我调用了 CSRF 令牌生成器,但我认为“问题”出在 TYPO3 本身(或预期行为)中:
$this->view->assign("csrfToken", FormProtectionFactory::get()->generateToken($this->extensionName,
$this->controllerContext->getRequest()->getControllerActionName(), $additionalObject));
Run Code Online (Sandbox Code Playgroud) 在我正在研究的插件的Fluid模板中,有些东西是硬编码的.例如:
<f:else>
<li>
<v:page.link pageUid="114" />
</li>
</f:else>
Run Code Online (Sandbox Code Playgroud)
由于pageUid值在测试和生产服务器上不相同,我想让它更具动态性.
我想以某种方式将其存储在变量中,然后在流体模板中使用该变量.
我只是不知道热卖这个和TYPO3的地方.
提前致谢!
我是TYPO3的新手,我有一个基本问题,但我还没有找到答案.pages和tt_contentTYPO3有什么区别?使用它们的最佳用例是什么?
谢谢
我写了一个扩展,并通过后端实现插件完成所有事情.
但是当我尝试通过typoscript实现我的扩展时,我每次都会收到此错误:
糟糕,发生错误!
无法确定默认控制器.请检查ext_localconf.php中的Tx_Extbase_Utility_Extension :: configurePlugin().
我不知道为什么..我尝试了不同的实现(根据tx_extbase_core_bootstrap-> run或tx_extbase_dispatcher-> dispatch以及附加信息而没有),当前的typoscript如下所示:
plugin.tx_graphichmenu {
settings {
menuUid = 1
}
}
lib.tx_graphichmenu = USER
lib.tx_graphichmenu {
userFunc = tx_extbase_core_bootstrap->run
extensionName = Graphichmenu
pluginName = Graphicmenu
controller = MenuController
action = showAction
}
temp.mainTemplate.subparts.stickyfooter < lib.tx_graphichmenu
Run Code Online (Sandbox Code Playgroud)
我双精度和三重检查一切,我发现没有一个单一的错......试过了没有"行动"和"调节器"的一部分,并没有什么改变
我在ext_localconf.php中的configurePlugin部分如下所示:
Tx_Extbase_Utility_Extension::configurePlugin(
$_EXTKEY,
'Graphicmenu',
array(
'Menu' => 'show',
),
// non-cacheable actions
array(
'Menu' => '',
)
);
Run Code Online (Sandbox Code Playgroud)
"show"动作没有参数.在那里我加载ts设置从我拿到对象的Uid显示
PS:每次更改后我都清除了缓存并删除了typo3conf中的"temp_CACHED _..."文件
在流体模板中,我正在显示项目列表
<f:for each="{myItems}" as="myItem" key="key">
{key}. myItem.name
</f:for>
Run Code Online (Sandbox Code Playgroud)
在这里,我需要显示每个项目的序列号.例如,
1. myitem one
2. myitem two
etc.
Run Code Online (Sandbox Code Playgroud)
但就我而言,我使用了{key}作为序列号.但它从0开始.
0. myitem one
1. myitem two
Run Code Online (Sandbox Code Playgroud)
那么如何将键增加1才能显示?
谢谢.
是否可以在不同的控制器中调用函数?我需要调用FindByCategoryGrouped($catId)designRepository.php和getCategories($catId)categoryRepository.php
public function listAction() {
$this->settings['flexform']['showCategory'] ? $catId = $this->settings['flexform']['showCategory']:$catId = $this->settings['listView']['showCategory'];
// print $catId;
if (!$catId || $this->settings['flexform']['showCategory'] == '-1') {
$designs = $this->designRepository->findAll();
} else {
// $designs = $this->designRepository->findByCategory($catId);
$designs = $this->designRepository->findByCategoryGrouped($catId); // THIS
$categories = $this->categoryRepository->getCategories($catId); // THIS
}
// indhold forsvinder hvis næste linje slettes
$this->view->assign('designs', $designs, "L", $GLOBALS['TSFE']->sys_language_uid);
$this->view->assign('catId', $catId);
$this->view->assign('categories', $categories);
}
Run Code Online (Sandbox Code Playgroud) $GLOBALS['TSFE']->pageNotFoundAndExit('');
Run Code Online (Sandbox Code Playgroud)
目前使用,但我想重定向到页面ID.
使用该命令redirectToUri,我找不到解决方案,或者没有工作.
码:
/**
* initialize action show
* @return void
*/
public function initializeShowAction() {
if ($this->request->hasArgument('xxx')) {
if ( $xxx=$this->xxxRepository->findByUid(
intval($this->request->getArgument('xxx'))
) ) {
$this->request->setArgument('xxx',$xxx);
return;
}
}
$GLOBALS['TSFE']->pageNotFoundAndExit('');
}
Run Code Online (Sandbox Code Playgroud) typo3 ×9
fluid ×5
extbase ×3
php ×2
typo3-7.6.x ×2
angularjs ×1
plugins ×1
redirect ×1
required ×1
symfony ×1
textarea ×1
typoscript ×1
validation ×1