Cake PHP Tutorial
Cake PHP Tutorial
MVC architecture
Isolates domain logic from the GUI
Basics of CakePhp
Folder Structure
App
Config : all configuration files Models : applications models, data sources and behaviors Controllers : applications controllers and components Views : presentational files Vendors : 3rd party classes or libraries Webroot: acts as document root for the application Locale : stores string files for internationalization Tmp : stores temporary data Plugins : plugin packages
Cake Vendors
Naming conventions
Class name :MyFirstClass Classname: filename
: my_first_name.php
Book tablename : books Classname: BooksController Ex: Database table : books Model class : Book Controller class : BooksController View found at : /app/views/books/index.ctp
Steps
Creating the database Creating a model Creating a controller Creating the views
Creating a model
Separates the domain logic from presentation isolating the application logic. Extends AppModel (extends Model) Contains data validation rules, association information and methods specific to the table it uses. For complete reference http://api.cakephp.org Cakephp dynamically creates a model object
class Book extends AppModel { var $name = Book'; }
Creating a controller
Manages the logic for a part of our application Can access the model object by $this->Book
class BooksController extends AppController { var $name = 'Books'; function index() { $this->set('books', $this->Book->find('all')); } }
$this->loadModel(Article'); loads a different model Components (packages of logic that are shared between controllers)
Sample model
<?php class Book extends AppModel { var $name = 'Book'; var $validate = array( 'title' => array( 'rule' => 'notEmpty' ), 'author' => array( 'rule' => 'notEmpty' ) ); } ?>
Sample Controller
<?php class BooksController extends AppController { var $name = 'Books'; var $helpers = array('Html','Ajax','Javascript'); function index() { $this->set('books', $this->Book->find('all')); } function view($id = null) { $this->Book->id = $id; $this->set('book', $this->Book->read()); print_r($this->viewVars); } }
Sample view
<h1>Books</h1> <table> <tr> <th>Id</th> <th>Title</th> <th>Author</th> </tr> <?php foreach ($books as $book: ?> <tr> <td><?php echo $book*Book'+*'id'+; ?></td> <td> <?php echo $html->link($book*Book+*'title'+, array('controller' => books, 'action' => 'view', $book*Book+*'id'+)); ?> </td> <td><?php echo $book*Book+*author'+; ?></td> </tr> <?php endforeach; ?> </table>
References
http://book.cakephp.org/view/4/BeginningWith-CakePHP