Frequently Asked Questions

Make sure "AllowOverride” is enabled in apache.

Also make sure template folder names that are less then 4 characters are in capital letters ie Crm should be CRM or resources will not be found. Folders such as Default are OK.

The Redirect response will be ignored due to the middleware. To perform a redirect the controller is required. Instead of attempting to redirect from the class return to the controller and pass back the conditions and allow the controller to perform the redirect.

It means PHP INTL is not installed on your system Mac users follow this guide

If INTL is install and the error remains then uncomment extension=php_intl in the php.ini and restart the server.


No third party template engines are supported

No, but you can nest views on a main view or template instance:

return View::make('Main/View1')
    ->nest('mainView2', 'Main/View2', $data)
    ->nest('mainView3', 'Main/View3', $data);


If you query an ORM Model, it will return a Model instance or a collection of Model instances, and not your expected data from multiple tables. Instead, please use directly the QueryBuilder.

To specify a layout file for error pages edit `app/Boot/Global.php`

find (around line 45):

$response = View::makeLayout('Default')
    ->shares('version', trim($version))
    ->shares('title', 'Error ' .$code)
    ->nest('content', 'Error/' .$code);

 Replace Default with the desired layout file for the current used theme.

The used Theme could be changed by using: (the second param is the theme).

$response = View::makeLayout('Default', 'AdminLite')


To manually add to a session and use in a view manually create a session:

Session::push('status', 'Section Created');

Or copy Templates/message.php to Views/message.php and then nest that:

return View::make('Path')
->nest('message', 'Message', array(
    'message' => __('Section Created'), 
    'type' => 'success'


$previous = Post::where('id', '<', $post->id)->first();
$next = Post::where('id', '>', $post->id)->first();


While you can use low level functions of Database API, it is much better to learn to use the QueryBuilder and ORM, those advanced abstraction layers being much more powerful.

Add a port entry to app/Config/Database.php

if your port number is 3306:

'port' => 3306

full example:

'mysql' => array(
      'driver'    => 'mysql',
      'hostname'  => 'localhost',
      'database'  => 'electric_crm',
      'username'  => 'electricstring',
      'password'  => 'tgdths673@',
      'prefix'    => PREFIX,
      'charset'   => 'utf8',
      'collation' => 'utf8_general_ci',
      'port'      => 3306,

The port option works for MySQL, PostgreSQL and SQLServer connections. Would be ignored by SQLite.

Yes by adding to database config the path to the socket in App\Config\Database.php

'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',


No, the JSON responses are not compressed.