【发布时间】:2011-03-12 07:37:14
【问题描述】:
也许是简单的问题,我只是错过了一些东西。
我有 2 个具有 3 个相同字段(名称/类型)的表。
occurrence 和occurrence_queue
Schema
Occurrence:
tableName: occurrence
columns:
id: {the usual}
date: {type: date}
start_time: {type: time}
end_time: {type: time}
eid: {a forign key}
OccurrenceQueue:
tableName: occurrence_queue
columns:
id: <-Same As Above->
occurrence_id: {the usual}
date: <-Same As Above->
start_time: <-Same As Above->
end_time: <-Same As Above->
然后我有一个基于 Occurrence 构建的模块,即学说:generate-module app *name* Occurrence
在这个模块中,我加载了一组事件,非常标准,所以这里是复杂的部分。我想要做的是从Occurrence 加载3 个公共字段,但是当我保存表单时,我希望它保存到OccurrenceQueue 表而不是Occurrence 表。
这样的形式:
DATE: *date picker*
Start Time: HH:MM
End Time: HH:MM
这是我失败的尝试:
public function executeEdit(sfWebRequest $request)
{
$this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
$this->forward404Unless($occurrence = Doctrine_Core::getTable('Occurrence')->find(array($request->getParameter('id'))), sprintf('Object occurrence does not exist (%s).', $request->getParameter('id')));
$request->setParameter('occurrence_id',$occurrence->getId());
$occurrenceQForm = new OccurrenceQueueForm($occurrenceQueue());
$occurrenceQForm->bind($request->getParameter($occurrenceQForm->getName(),$request->getFiles($occurrenceQForm->getName()));
if($occurrenceQForm->isValid())
{
$occurrenceQForm->save();
$this->redirect("happyness");
}
}
这永远不会验证。我假设,因为字段和验证是相同的,它会是全金的,什么不是,事实并非如此。那么问题来了,我该如何完成这个任务呢?最终的想法是OccurrenceQueue表将用于更新Occurrence表。
马哈洛的帮助!
【问题讨论】:
-
另外我试过这个代码:
$SRQ = new OccurrenceQueue(); $SRQ->setOccurrencesId($phpc_occurrences->getOccid()); $SRQ->setStarttime($request->getPostParameter('starttime')); $SRQ->setEndtime($request->getPostParameter('starttime')); $SRQ->setStartdate($request->getPostParameter('startdate')); $OQForm = new OccurrenceQueueForm($SRQ); $OQForm->save(); -
$occurrenceQForm->bind($request->getParameter($occurrenceQForm->getName(),$request->getFiles($occurrenceQForm->getName()));应该是$occurrenceQForm->bind($request->getParameter($occurrenceQForm->getName()),$request->getFiles($occurrenceQForm->getName());,不是吗? -
你能准确地说“从不验证”是什么意思吗(有错误消息吗?)你能把
var_dump($request->getParameter($occurrenceQForm->getName()))显示的内容也放上去吗? -
@greg0ire 是的,有语法错误,这是伪代码不是实际的,我的意思是 isValid() 返回 False,这就是为什么... var_dump 返回:Null ...现在至少我知道为什么它失败了,但我不知道为什么我的请求为空......?
-
@greg0ire 但是来自 $request->getParameter($occurrenceForm->getName()) 的 var_dump 是:
array(3) { ["startdate"]=> array(3) { ["month"]=> string(1) "3" ["day"]=> string(2) "20" ["year"]=> string(4) "2011" } ["starttime"]=> array(2) { ["hour"]=> string(2) "20" ["minute"]=> string(1) "0" } ["endtime"]=> array(2) { ["hour"]=> string(2) "21" ["minute"]=> string(1) "0" } }
标签: forms symfony1 doctrine bind validation