我有一個應用程序,您可以查看俱樂部,俱樂部都顯示爲鏈接,然後點擊俱樂部鏈接並進入俱樂部說明頁面。在這個頁面上是俱樂部的詳細信息和用戶添加評論的評論框。Zend框架評論框
我遇到的問題是,當我添加評論。我有行動得到俱樂部ID和顯示信息,既在,使他們相互衝突的clubDescriptionController的指標作用的意見採取行動。
我的第二個問題是在我的數據庫中,我在評論表中有一個club_id(外鍵與俱樂部表「id」的主鍵鏈接),以與用戶評論的俱樂部相關聯,因此當用戶評論評論與他們正在訪問的頁面的俱樂部相關聯,在我的代碼中,我需要修正getClub操作和評論操作衝突的錯誤。但在此之後,我需要在正確的方向上指出如何將發佈俱樂部ID的評論發佈到評論數據庫的club_id字段中。這就是漫不經心的,謝謝你的時間,下面是代碼。如果您需要更多信息,請不要猶豫,問。
clubDescriptionController:
<?php
class ClubDescriptionController extends Zend_Controller_Action
{
public function indexAction()
{
$this->authoriseUser();
//get id param from index.phtml (view)
$id = $this->getRequest()->getParam('club_id');
//get model and query by $id
$clubs = new Application_Model_DbTable_Clubs();
$clubs = $clubs->getClub($id);
//assign data from model to view [EDIT](display.phtml)
$this->view->clubs = $clubs;
//action for the comments submission
$form = new Application_Form_Comment();
$form->submit->setLabel('Comment');
$this->view->form = $form;
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$comment = new Application_Model_DbTable_Comments();
$comment->addComment($form->getValue('comment'));
$this->_helper->redirector('index');
} else {
$form->populate($formData);
}
}
}
註釋形式:
<?php
class Application_Form_Comment extends Zend_Form
{
public function init()
{
$this->setName('comment');
$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int');
$comment = new Zend_Form_Element_Text('comment');
$comment->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($id, $comment, $submit));
}
}
評論模型:
<?php
class Application_Model_DbTable_Comments extends Zend_Db_Table_Abstract
{
protected $_name = 'comments';
public function getComment($id) {
$id = (int) $id;
$row = $this->fetchRow('id = ' . $id);
if (!$row) {
throw new Exception("Count not find row $id");
}
return $row->toArray();
}
public function addComment($comment) {
$data = array(
'comment' => $comment,
);
$this->insert($data);
}
}
的視圖:
<div id="comments-holder">
<p id="comments-title">Comments</p>
<?php
echo $this->form;
?>
</div>
在那一刻,我提交它被添加到數據庫,但與下面的錯誤註釋:
An error occurred
Application error
Exception information:
Message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`manchesternightlife`.`comments`, CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`club_id`) REFERENCES `clubs` (`id`))
Stack trace:
#0 /Users/R_iMac/Sites/MN/library/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /Users/R_iMac/Sites/MN/library/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#2 /Users/R_iMac/Sites/MN/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `co...', Array)
#3 /Users/R_iMac/Sites/MN/library/Zend/Db/Adapter/Abstract.php(575): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `co...', Array)
#4 /Users/R_iMac/Sites/MN/library/Zend/Db/Table/Abstract.php(1075): Zend_Db_Adapter_Abstract->insert('comments', Array)
#5 /Users/R_iMac/Sites/MN/application/models/DbTable/Comments.php(25): Zend_Db_Table_Abstract->insert(Array)
#6 /Users/R_iMac/Sites/MN/application/controllers/ClubDescriptionController.php(30): Application_Model_DbTable_Comments->addComment('hey')
#7 /Users/R_iMac/Sites/MN/library/Zend/Controller/Action.php(516): ClubDescriptionController->indexAction()
#8 /Users/R_iMac/Sites/MN/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('indexAction')
#9 /Users/R_iMac/Sites/MN/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#10 /Users/R_iMac/Sites/MN/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#11 /Users/R_iMac/Sites/MN/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#12 /Users/R_iMac/Sites/MN/public/index.php(28): Zend_Application->run()
#13 {main}
Request Parameters:
array (
'controller' => 'club-description',
'action' => 'index',
'club_id' => '1',
'module' => 'default',
'id' => '0',
'comment' => 'hey',
'submit' => 'Comment',
)
感謝
裏克
您的表格「評論」的外觀如何? – 2012-04-18 17:51:34
評論表 - > http://pastebin.com/hGz5fgwS – Rik89 2012-04-18 17:58:07
另一方面,爲什麼要在索引操作中添加註釋?我認爲一個更好的主意是添加新的操作來添加評論。 – 2012-04-18 20:44:25