当我尝试包含新内容时,在此控制器中,他没有运行保存选项并返回错误消息,因为我使用了print_r函数来检查$ this->请求 - >数据,并传递正确的参数。下面是代码:
控制器/ CanvasController.php:
class CanvasController extends AppController {
public $name = 'Canvas';
function beforeFilter() {
parent::beforeFilter();
//$this -> layout = 'dialog';
$this -> layout = 'default-original';
}
public function index() {
$this -> set('Canvas', $this -> Canvas -> find('all'));
}
public function add() {
if ($this -> request -> is('post')) {
if ($this -> Canvas -> save($this -> request -> data)) {
$this -> Session -> setFlash(__('The Canvas has been saved'));
$this -> redirect(array('action' => 'index'));
} else {
$this -> Session -> setFlash(__('The Canvas could not be saved. Please, try again.'));
}
}
}
public function edit($id = null) {
$this -> Canvas -> id = $id;
if ($this -> request -> is('get')) {
$this -> request -> data = $this -> Canvas -> read();
} else if ($this -> Canvas -> save($this -> request -> data)) {
$this -> Session -> setFlash('Canvas updated.');
$this -> redirect(array('controller' => 'user', 'action' => 'index'));
}
}
public function delete($id = null) {
if (!$this -> request -> is('post')) {
throw new MethodNotAllowedException();
}
$this -> Canvas -> id = $id;
if (!$this -> Canvas -> exists()) {
throw new NotFoundException(__('Invalid.'));
}
if ($this -> Canvas -> delete($id)) {
$this -> Session -> setFlash('The Canvas with id: ' . $id . ' has been deleted.');
$this -> redirect(array('controller' => 'user', 'action' => 'index'));
}
$this -> Session -> setFlash(__('Canvas was deleted.'));
$this -> redirect(array('controller' => 'user', 'action' => 'index'));
}
}
型号/ Canvas.php:
class Canvas extends AppModel {
public $name = 'Canvas';
public $hasAndBelongsToMany = array(
'users' => array(
'classname' => 'Users',
'foreignkey' => 'canvas_id',
'joinTable' => 'canvas_has_users'
)
);
public $hasMany = array(
'CanvasContents' => array(
'classname' => 'CanvasContents',
'foreignKey' => 'canvas_id'
)
);
public $validate = array(
'name' => array(
'required' => array(
'rule' => array(
'notEmpty'
),
'message' => 'A name is required'
)
)
);
}
查看/帆布/ add.ctp:
<?php echo $this -> Form -> create('Canvas'); ?>
<fieldset>
<?php echo $this -> Form -> input('name'); ?>
<?php echo $this -> Form -> input('description'); ?>
</fieldset>
<?php echo $this -> Form -> end('Submit');?>
SQL代码:
CREATE TABLE IF NOT EXISTS `sistema`.`canvas` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`description` TEXT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
答案 0 :(得分:2)
我不完全确定您的代码有什么问题。但是,作为开始,您应该尝试以下方法:
public function add() {
if ($this -> request -> is('post')) {
$this->Canvas->create(); // **** ADD This missing call ****
if ($this -> Canvas -> save($this -> request -> data)) {
$this -> Session -> setFlash(__('The Canvas has been saved'));
$this -> redirect(array('action' => 'index'));
} else {
$this -> Session -> setFlash(__('The Canvas could not be saved. Please, try again.'));
}
}
}
答案 1 :(得分:0)
通过添加$this->Canvas->create();
来尝试它,如果你还有问题那么问题可能在表中..也检查你的dataabase表..
答案 2 :(得分:0)
我解决了,这是代码:
控制器/ CavasController.php:
<?php
class CanvasController extends AppController {
public $name = 'Canvas';
function beforeFilter() {
parent::beforeFilter();
$this -> layout = 'dialog';
$this -> Auth -> allow();
//$this -> layout = 'default-original';
}
public function index() {
$this -> set('Canvas', $this -> Canvas -> find('all'));
}
public function setActiveCanvas($canvasId) {
$this -> Session -> write('activeCanvas', $canvasId);
}
public function add() {
if ($this -> request -> is('post')) {
$this -> Canvas -> create();
if ($this -> Canvas -> save($this -> request -> data)) {
$this -> Session -> setFlash(__('The Canvas has been saved'));
$this -> redirect('/');
} else {
$this -> Session -> setFlash(__('The Canvas could not be saved. Please, try again.'));
}
}
}
public function edit($id = null) {
$this -> Canvas -> id = $id;
if ($this -> request -> is('get')) {
$this -> request -> data = $this -> Canvas -> read();
} else if ($this -> Canvas -> save($this -> request -> data)) {
$this -> Session -> setFlash('Canvas updated.');
$this -> redirect('/');
}
}
public function delete($id = null) {
if (!$this -> request -> is('post')) {
throw new MethodNotAllowedException();
}
$this -> Canvas -> id = $id;
if (!$this -> Canvas -> exists()) {
throw new NotFoundException(__('Invalid.'));
}
if ($this -> Canvas -> delete($id)) {
$this -> Session -> setFlash('The Canvas with id: ' . $id . ' has been deleted.');
$this -> redirect(array('controller' => 'user', 'action' => 'index'));
}
$this -> Session -> setFlash(__('Canvas was deleted.'));
$this -> redirect(array('controller' => 'user', 'action' => 'index'));
}
}
?>
型号/ Canvas.php:
<?php
class Canvas extends AppModel {
public $name = 'Canvas';
public $hasMany = array(
'CanvasContents' => array(
'classname' => 'CanvasContents',
'foreignKey' => 'canvas_id'
)
);
public $belongsTo = array(
'Star' => array(
'className' => 'Stars',
'foreignKey' => 'stars_id'
),
'User' => array(
'className' => 'Users',
'foreignKey' => 'users_id'
),
'UserRole' => array(
'className' => 'UserRoles',
'foreignkey' => 'user_roles_id'
)
);
public $validate = array(
'name' => array(
'required' => array(
'rule' => array(
'notEmpty'
),
'message' => 'A name is required'
)
)
);
}
?>
查看/帆布/ add.ctp:
<?php echo $this -> Form -> create('Canvas',array('action'=>'add')); ?>
<fieldset>
<?php echo $this -> Form -> input('Canvas.name'); ?>
<?php echo $this -> Form -> input('Canvas.description'); ?>
</fieldset>
<?php echo $this -> Form -> end(); ?>
MySQL的:
CREATE TABLE IF NOT EXISTS `sistema`.`canvas` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`description` TEXT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB