1
votes

i am trying to make an simple cakephp aplication!

I have a form that creates a new article.. my problem is that i have an input field for the artice slug but when i cakephp submits te form the slug field in database remains empty..

here is the add method from my articleController

public function add(){


    $article = $this->Articles->newEntity(); //gffdgfd
        if ($this->request->is('post')){

        $this->Articles->patchEntity($article, $this->request->data());
            if($this->Articles->save($article)){

            $this->Flash->success(__('Your Article has been saved!'));
            return $this->redirect(['action' => 'index']);


        }

        $this->Flash->error(__('Cannot save article! Please try again!!'));
    }
 $this->set('article', $article);

}

and my add.ctp

<h1>Add Article</h1>

<?php

echo $this->Form->create($article);

echo $this->Form->control('user_id', ['type' => 'hidden', 'value'=> 1 ]);
echo $this->Form->control('published', ['type' => 'hidden', 'value'=> 1 ]);
echo $this->Form->control('title');
echo $this->Form->control('slug');
echo $this->Form->control('body', ['rows' => 5 ]);
echo $this->Form->button(__('Save Article'), ['class' => 'button', 'style' => 'margin-right:10px; margin-left:10px']);
echo $this->Html->link('Back', ['action' => 'index'], ['class' => 'button']); 
echo $this->Form->end();

?>
1

1 Answers

1
votes

If slug field is present in your request data, then you should check if this field is accessible for assignment in your entity. Look at file src/Model/Entity/Article.php, on top of class body you will have an array named $_accessible - check if your slug field is present, and if not, set it to true:

protected $_accessible = [
    /* other fields */
    'slug' => true
];

Please check more about assignment of properties in docs: CakePHP 3 Entities - Mass Assignment