$username = $this->request->session()->read('Auth.User.username'); or $username = $this->Auth->user('username');
A Nice Login logout links with;
The following example shows how to submit a form with AJAX to a Cakephp controller;
Jquery Javascript Funtion;
/* sends the form to the controller, ensure form fields names match up with escpected values. */ function testajaxaddv3(){ jQuery.ajax({ type:'POST', async: true, cache: false, url: 'http://localhost/mycakeapp/messages/ajaxadd', success: function(response) { //success console.log(response); }, error: function(response) { console.log(response); }, data:jQuery('form').serialize() }); }
CakePHP 3 Form:
<?= $this->Form->create(null) ?> <fieldset> <legend><?= __('Add Quizzes Answer') ?></legend> <?php echo $this->Form->input('message'); ?> </fieldset> <?= $this->Form->end() ?> </div> <?php echo $this->Form->button('save',['onclick'=>'testajaxaddv3()']); ?>
How to create a javascript function to send a AJAX request to your cakePHP controller action;
function testajaxadd(question_id,answerindex){ var mydata=new Object(); mydata.question_id=question_id; mydata.answerindex=answerindex; jQuery.ajax({ type:'POST', async: true, cache: false, data: mydata, url: 'http://localhost/myquiz/questions-answers/ajaxadd', success: function(response) { //success console.log(response); }, error: function(response) { console.log(response); } }); }
Cakephp controller action;
public function ajaxadd(){ $questionsAnswer = $this->QuestionsAnswers->newEntity(); if ($this->request->is('ajax')) { $questionsAnswer = $this->QuestionsAnswers->patchEntity($questionsAnswer, $this->request->data); // Added this line which makes the record belong to the logged in user $questionsAnswer->user_id = $this->Auth->user('id'); if ($this->QuestionsAnswers->save($questionsAnswer)) { $status['msg']="Saved Record"; } else { $status['msg']="Error Saving Record"; } //return the message to js function $this->response->body(json_encode($status)); return $this->response; } }
echo $this->Html->link('test clear','javascript:cleartable()');
echo $this->Form->button('new size', ['onclick' => 'myfunction()']); <script> function myfunction(){ //do stuff } </script>
One of the key things youll do with cakephp is to ensure that when your saving data that the user logged in owns thats you save their user_id as well.
the simpliest way to do this is with one line of code added to your add action;
Sample Code from a Controller called Joke;
public function add() { $joke = $this->Jokes->newEntity(); if ($this->request->is('post')) { $joke = $this->Jokes->patchEntity($joke, $this->request->data); // Added this line, set the userid to the logged in user $joke->user_id = $this->Auth->user('id'); if ($this->Jokes->save($joke)) { $this->Flash->success(__('The joke has been saved.')); return $this->redirect(['action' => 'index']); } else { $this->Flash->error(__('The joke could not be saved. Please, try again.')); } } $users = $this->Jokes->Users->find('list', ['limit' => 200]); $jokescategories = $this->Jokes->Jokescategories->find('list', ['limit' => 200]); $this->set(compact('joke', 'users', 'jokescategories')); $this->set('_serialize', ['joke']); }
Open up your command prompt in your app/bin folder;
enter the command;
//non vendor specified cake bake plugin ContactManager //vendor specified cake bake plugin Gmcd/ContactManager
Baking the controller for your plugin;
//no vendor cake bake controller --plugin ContactManager Contacts cake bake controller --plugin Gmcd/ContactManager Contacts
Baking the Model View and Controller:
cake bake all --plugin Gerrymcdonnell/jokes jokes
Read more here:
http://book.cakephp.org/3.0/en/plugins.html#creating-your-own-plugins
If you need to load a plugin’s helper in a view or a page;
Plugin name:
Lowercasevendor/exampleplugin
Helper Namespace:
namespace lowercasevendorexamplepluginViewHelper;
Location:
htdocstestcakepluginsLowercasevendorexampleplugin
<?php //load helper $this->loadHelper('Lowercasevendor/exampleplugin.My');?>
To do this, simple open your table model file and add the following;
public function validationDefault(Validator $validator) { //the below code makes the field "title" validate as unique $validator ->requirePresence('title', 'create') ->add('title', 'unique', ['rule' => 'validateUnique', 'provider' => 'table','message'=>'Error: Title already exists.']) ->notEmpty('title'); return $validator; }
Manual:
http://book.cakephp.org/3.0/en/core-libraries/validation.html