Cakephp Missing Controller - cakephp

When I tried to run my website. It always shown me this error.
Missing Controller
Error: RealestateController could not be found.
Error: Create the class RealestateController below in file: app\controllers\realestate_controller.php
I don't have such controller yet, What should I do ?

Just create a file in your controllers folder as such:
Name the file realestate_controller.php
And in this file add
<?php
class RealestateController extends AppController{
//If you want you can add
public function index(){
}
}
?>
Thanks,

Related

Fatal error: Class 'AppModel' not found in .../lib/Cake/Utility/ClassRegistry.php on line 186

I'm trying to define a shell for my Cakephp App. This is the code:
<?php
App::uses('AppModel','Model');
class UserShell extends AppShell {
public $uses = array('User');
public function show() {
$user = $this->User->findByUsername($this->args[0]);
$this->out(print_r($user, true));
}
}
?>
but when I try to execute the command
./cake user show anyUserName
the console returns the error
Class 'AppModel' not found in /var/www/cakeprova_2.5.7/lib/Cake/Utility/ClassRegistry.php on line 186
I have the file AppModel.php at its own place, so I don't know what's wrong... Can anybody help me please?
You are using App::uses() wrong.
It is meant to include classes you need in this file not others.
So
a) Fix your statements in this shell file, and add App::uses('AppShell', 'Console/Command');
b) You are most likely missing an App::uses('AppModel','Model'); in your User model class file then.
Because there you are saying class User extends AppModel {}, right?
Thank you Mark! The error was explained: I put the file in the wrong directory:
/lib/Cake/Console/Command
but after putting it in the right dir:
/app/Console/Command
it worked. But great thank for your help
I found this error when I migrate cakephp 1.3 to 2.10
I update Model/AppModel.php as below and fixed the error.
App::import('Vendor', 'Find.find_app_model');
class AppModel extends FindAppModel {
To
App::uses('Model', 'Model');
class AppModel extends Model {

Admin Panel/Interface in a CakePHP project

I want to create an "Admin Panel/Interface" in one of my CakePHP projects. You know its very common in modern web sites. At first, I planned to create a plugin for this, and tried to do it. It didn't work, no idea why, I'll ask for help for it later. But, next I saw that CakePHP already provides this feature, using "Scafolding". I am now trying this, but don't know why its not working as I expected. Here is what I did :
app/config/core.php :
---------------------
.
.
.
Configure::write('Routing.prefixes',array('admin'));
.
.
.
app/Controller/AppController.php :
----------------------------------
.
.
.
public $components=array(
'Session',
'Auth'=>array(
'loginRedirect'=>array('admin'=>true,'controller'=>'home','action'=>'index'),
'logoutRedirect'=>array('controller'=>'home','action'=>'index'),
'authorize'=>array('Controller')
)
);
.
.
.
I thought, there should be a seperate controller for Admin Panel, that's why I created it :
app/Controller/AdminsController.php :
-------------------------------------
<?php
App::uses('AppController','Controller');
class AdminsController extends AppController{
public $name='Admins';
public $scaffold='admin';
}
But it didn't work. So, I thought CakePHP provided this feature for all individual controller; I mean, I thought I am supposed to have the Admin Panel for all individual controller, not as a different module/controller/sub-system. So, I changed a little one of my existing controllers "Controllers1" :
<?php
App::uses('AppController','Controller');
class Controllers1Controller extends AppController{
public $name='Controllers1';
public $scaffold='admin';
}
then tried to go to this URL : my_site/admin/jobs/view
but still same result.
Please give me a suggestion, what should I do ? Should I create a new plugin for the "Admin Panel", or Scafolding is better ? And what is my fault ?
Thanks
The AdminsController is not necessary to use the admin prefix, all you need to do is define the Routing.Prefixes like you already did.
Configure::write('Routing.prefixes',array('admin'));
For the JobsController example that you mentioned to us what all you need to do to make it work is:
<?php
App::uses('AppController', 'Controller');
class JobsController extends AppController {
public $scaffold = 'admin';
}
Because the way to make Routing Prefixes work is to declare methods with the prefixes, not use an additional controller:
<?php
App::uses('AppController', 'Controller');
class ArticlesController extends AppController {
function admin_index() {
//This method can be found under /admin/articles
}
}

CakePHP 2.0.3 Fatal Error flash() on object

I've get this message when I tried to use a wrong controller and I figured it out that I'm not getting the right Error from cakephp I've got in 2.0.0 the right one:
Now when I try a wrong controller I get only this message:
Fatal error: Call to a member function Flash() on a non-object in
/srv/www/htdocs/web843/HTML/schaetzmal/lib/Cake/View/Layouts/default.ctp
on line 44
Does cakephp 2.0.3 have an bug or do I miss something to install to let work this or something else what I can do?
Make sure you've added the Session helper to your public $helpers array.
class SomethingsController extends AppController {
public $helpers = array('Session');
}
Or you could add it to a global AppController so that the Session helper is available to all controllers.
class AppController extends Controller {
public $helpers = array('Session');
}
I found some problems why my AppController didn´t work.
Like mensch says i have to use Session in my AppController for global but that´s not the solution because the book of cakephp says in "a global AppController"
NOTE
CakePHP merges the following variables from the AppController to your application’s controllers:
$components
$helpers
$uses
but it´s not happening. Because i overwrite it in the public variable $helpers.
therfore i take the parent given one and merge it with it:
<?
class AppController extends Controller {
public $viewClass = 'Theme';
public $theme;
public function beforeFilter() {
parent::beforeFilter();
$this->theme = 'SM';
$this->helpers = array('Form','Html','Js');
}
}
?>
the $this->helpers = array('Form','Html','Js'); do the merge and it works fine.
thank you guys
thanks for helping mensch that was the hack i needed

Cakephp missing helper file error

I'm getting below error...I'm not sure what this means as I have included helper file in the view file...
Missing Helper File
Error: The helper file track/views/helpers/request_handler.php can not be found or does not exist.
Error: Create the class below in file: track/views/helpers/request_handler.php
<?php
class RequestHandlerHelper extends AppHelper {
}
?>
If you can let me know what this means that would be appreciated!
Thank you.
Jae
Unless you customized how your CakePHP works, this should apply to most cases:
Checklist
Make sure the helper file is created in /app/views/helpers/request_handler.php
Make sure the content of the request_handler.php looks like this:
class RequestHandlerHelper extends AppHelper {
var $name = 'RequestHandler';
//bla....
}
Make sure in the controller that renders the view has the helper array included
class FancyController extends AppController {
var $name = 'Fancy';
var $helpers = array('RequestHandler');
//bla....
}
I think that's all :)
Cheers
you have to include the helpers in the controller (app_controller if you want the helper to be available for views of all controller)
var $helpers = array('Form', 'Html', 'YourHelper');
If you are using any version of CakePHP, just open the file core.php in the folder config and edit the line Configure::write('debug', 0); to Configure::write('debug', 2);
It will say the erro and how to create the file and where to put it.

Controller not found in cakePHP

I have controller class EmployeeController in employee_controller.php file,and i have a model class Employee in employee.php ,database table is employees ,All the functions are working (such as findall() and read() are working fine),but i have add function which is like this
function add() {
if (!empty($this->data)) {
if ($this->Employee->save($this->data)) {
$this->Session->setFlash('Employee has been saved.');
$this->redirect(array('action' => 'index'));
}
When i tried to save ,An error EmployeesController not found will display and shows the following code
<?php
class EmployeesController extends AppController {
var $name = 'Employees';
}
?>
i am not able to solve this problem ,please help me out to get rid of this problem
The file should be called employees_controller.php, not employee_controller.php.
All controller files are named in the plural.
You can also learn about the naming of the tables and the conventions at http://cakeapp.com
I don't know if the question is still important, but the cakephp convention says that filenames for controllers must be in plural an without underscores, so your controller file should be named EmployeesController.php.

Resources