When I am trying to include new content, in this controller, he's not running the save option and returns the error message, since I used the print_r function to check the $ this-> request-> data, and is passing the correct parameters. below is the code:
Controller/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'));
}
}
Model/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'
)
)
);
}
View/Canvas/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 code:
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
I solved, here is the codes:
Controller/CavasController.php:
Model/Canvas.php:
View/Canvas/add.ctp:
MySQL: