Cakephp missing helper file error - cakephp

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.

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 {

Cakephp Missing Controller

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,

CakePHP 2.0 can't access Model from its own Controller

I'm still trying to migrate from CakePHP 1.3 to 2.0
I have a Controller UsersController and its Model User.
The class User has some constants which I could easily access from the UsersController using User::constant. But for CakePHP 2.0 it doesn't work: I get an error saying the User class is not found. It works if I App::Import('Model', 'User');.
It sure has to do with their built-in lazy loading in 2.0!
you simple need to tell this file that it has other dependencies
do that at the very top of your UserController file:
<?php
App::uses('User', 'Model');
then everything works fine
You can try setting the controller name (in UsersController):
var $name = 'Users';
Or using the "uses" var (in other controllers:
public $uses = array('User');
Does that not work?
Did you declare the name of the model like that ?
class User extends AppModel {
public $name = 'User';
}
Do you have others variables in your UsersController ?
I set variables in the model like this:
//Person model
public $genders = array('m' => 'male', 'f' => 'female');
Then get them from the controller like this:
//People controller
$genders = $this->Person->genders;
No special code needed. (Is this what you're talking about?)
Also, I don't believe you need to set the $name variable anywhere anymore - I think that was just for PHP 4. (not 100% on that part, but... I don't ever set that anymore, and my Cake2 apps run fine)
You have to load the model like this:
$this->loadModel('User');

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 pages_controller always uses default layout

I have a static page that I want to serve so I made a .ctp in the /views/pages/ directory. The problem is that it's using the default layout which I do not want to use. I tried making my own pages_controller and passing the $layout var but that does not work. There has to be a way to tell a /pages/ to use another layout.ctp. No?
I was having a similar issue, thought i'd report my solution in case others are facing the same thing.
I wasn't using pages, but had a controller "members":
<?php
class MembersController extends AppController {
var $name = 'Members';
var $helpers = array('Html','Javascript','Form','Time');
var $uses = array();
function index() {
// Works, will load the ajax.ctp layout
// http://localhost/members/index
$this->layout = 'ajax';
}
function signup() {
// Does not work, loads the default.ctp layout
//http://localhost/members/signup
$this->layout = 'ajax';
}
}
?>
function index() was properly loading the ajax layout, but signup() kept loading default. Turns out the mistake was I did not have a view/signup.ctp. Once I added that it loaded the proper layout. Was an absentminded mistake but left me barking up the wrong tree because signs were pointing towards a layout issue rather than a view issue.
few things to check
make a custom pages_controller.php
define variable $layout and set it to the layout you want.
make sure the layout exists in
views/layout/
goes to the following link "lib\Cake\Controller" open CakeErrorController.php add your layout .
public function __construct($request = null, $response = null) {
parent::__construct($request, $response);
$this->constructClasses();
$this->Components->trigger('initialize', array(&$this));
$this->_set(array('cacheAction' => false, 'viewPath' => 'Errors'));
$this->layout='student';
}
I had this same issue and all errors were misleading.
What my problem ended up being is that I was trying to use a controller that didn't have a backing table/model so I was trying to reuse some other name in the controller's $name member variable because otherwise it would say that model didn't exist.
Long story short make sure that your controller name has a backing model object with the same naming convention.

Resources