环境:Mac OS X Lion, PHP 5.3.10, MySQL 5.X,TYPO3 4.7.1,Extbase 4.7.1,流体4.7.0
几天来,我一直在纠结extbase中的一个奇怪的验证错误。
Tx_Foo_Controller_FeUserController包含以下两个操作:
/** * @param $feUser * @return void * @dontvalidate $feUser */ public function registerAction(Tx_Foo_Domain_Model_FeUser $feUser = NULL )
和
/** * @param Tx_Foo_Domain_Model_FeUser $feUser * @param string $password2 * @return void */ public function createAction( Tx_Foo_Domain_Model_FeUser $feUser ,$password2 )
两项行动的内容:
$this->view->assign('feUser', $feUser);
登记册。html具有以下形式:
<f:flashMessages />
<f:form.errors>
<div class="error">
{error.message}
<f:if condition="{error.propertyName}">
<p>
<strong>{error.propertyName}</strong>:
<f:for each="{error.errors}" as="errorDetail">
{errorDetail.message}
</f:for>
</p>
</f:if>
</div>
</f:form.errors>
<f:form object="{feUser}" objectName="feUser" class="form-horizontal" id="fooRegisterForm"
controller="FeUser" action="create" noCache="1" noCacheHash="1">
<f:form.textfield type="email" property="email" value="{feUser.email}"/>
<f:form.textfield property="password" value=""/>
<f:form.textfield name="password2" value=""/>
</f:form>
createAction中只有一些“OK”文本。
问题是:每次我向createAction()方法添加@validate注释时,都会出现以下错误:尝试调用Tx\u Foo\u Controller\u feuser Controller时出错-
如果使用自定义验证器或捆绑验证器,则没有区别。
createAction()的示例
* @validate $password2 Tx_Extbase_Validation_Validator_IntegerValidator
整数用于引发错误。
自定义验证器类似于Tx\u Foo\u Domain\u validator\u FeUserValidator,您不必添加@validation标记。
自定义验证器:
/**
* Validation of given Params
*
* @param Tx_Foo_Domain_Model_FeUser $feUser
* @return void
*/
public function isValid($feUser)
{
$this->addError('Passwords are not RSA strings', 1297418974 );
return false;
}
有没有回报声明也没关系...
我抬头看了Tx_Extbase_MVC_Controller_ActionController-
如果在feUser类的模型中添加@validation标记,比如@validate notEmpty,也会出现相同的错误
通过typoscript配置Extbase
config.tx_extbase {
features.rewrittenPropertyMapper = 1
persistence{
storagePid = 5
enableAutomaticCacheClearing = 1
updateReferenceIndex = 0
classes {
Tx_Foo_Domain_Model_FeUser {
mapping {
tableName = fe_users
columns {
lockToDomain.mapOnProperty = lockToDomain
}
}
}
}
}
}
先谢谢你。
附言:当然,我在问这个问题之前在谷歌上搜索了很多。
有一件事你应该始终牢记在心,那就是有一个缓存,你不能通过按下按钮来清理。Extbase反射缓存缓存模型和控制器中的所有注释。所以在开发过程中,为了避免很多挫折,禁用这个糟糕的东西。
我曾经写过一篇关于它的博客:http://www.alexanderschnitzler.de/2012/01/disable-extbase-reflection-cache-during-development-typo3-4-6/
因此,请先尝试此操作,然后手动截断数据库表cf_extbase_*
之后,如果仍然出现错误,请报告。
在我的例子中,我通过在typoscript set中注释这一行来解决这个问题:
在我的例子中出现了这个错误,因为缺少一个extbase引用器
。如果没有引用者
,默认消息将由extbase引发。
因为我没有表格,只有一个链接,所以我必须手动添加推荐人
:
/index.php?id=10&tx_bieval_pi1[send]=1&tx_bieval_pi1[hash]=12345&tx_bieval_pi1[__referrer][actionName]=index&tx_bieval_pi1[action]=form&tx_bieval_pi1[controller]=Participation
这招成功了
这个问题已经被问了很多次了,即使是在经历了所有的解决方案之后,我也无法让hibernate validator工作。 控制器类:- servlet-上下文:- 依赖关系:- 验证类:- 我错过了什么?
我想验证请求参数。我已经浏览了很多博客并回答了问题,我也做了同样的事情。在控制器类上添加了@Validated。 控制器中的方法: 控制器建议 配置: 完成所有这些之后,现在我得到一个404错误。"状态":404,"错误":"未找到","消息":"没有可用的消息"
我必须把所有的验证放在命令处理程序/域模型中吗?或 我必须从Service-B Saga调用Service-A的Rest API。(这使得服务中有一个单一的入口点)。或 还有其他解决方案吗? 使用-Axon Framework4.2和带有Spring Boot的Axon Server。
CodeIgniter 的开发基于 MVC(模型-视图-控制器)设计模式。MVC 是一种 用于将应用程序的逻辑层和表现层分离出来的软件方法。在实践中,由于这种分离 所以你的页面中只包含很少的 PHP 脚本。 模型 代表你的数据结构。通常来说,模型类将包含帮助你对数据库进行增删改查的方法。 视图 是要展现给用户的信息。一个视图通常就是一个网页,但是在 CodeIgniter 中, 一个视图也可以是一
有一个项目大约有20个控制器。每个控制器都有其相应的测试类。当我们尝试添加新的controller tests类时,以前运行良好的一些测试开始随机失败。如果使用@Ignore注释任何控制器测试类,测试将恢复正常。 这是失败测试抛出的异常: org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.Illega
Enforce模块用于验证数据。对于使用以前的验证器的用户,还可以继续使用,它们中的一部分整合到了enforce,剩余部分还没有。推荐你开始使用orm.enforce来取代orm.validators。可用的验证器的列表请见node-enforce。 unique验证器也构建于ORM中,可以这样来访问: name: orm.enforce.unique("name already taken!")