cakephp更改视图不从控制器传递数据
我在控制器中有一个功能,首先检查用户是否从网站、facebook或手机提交表单 然后根据需要更改布局。但是使用移动设备时,我想加载不同的视图,因为显示器完全不同 我的问题是,来自控制器的数据没有传递到新视图。我得到了视图中所有php的未定义变量和参数。php代码在所有视图中都是完全相同的,它只是我在移动视图中更改的div的布局 我不明白为什么会这样 控制器cakephp更改视图不从控制器传递数据,php,cakephp,Php,Cakephp,我在控制器中有一个功能,首先检查用户是否从网站、facebook或手机提交表单 然后根据需要更改布局。但是使用移动设备时,我想加载不同的视图,因为显示器完全不同 我的问题是,来自控制器的数据没有传递到新视图。我得到了视图中所有php的未定义变量和参数。php代码在所有视图中都是完全相同的,它只是我在移动视图中更改的div的布局 我不明白为什么会这样 控制器 function availability() { if ($_REQUEST['from'] == 'facebook') {
function availability() {
if ($_REQUEST['from'] == 'facebook') {
$this->layout = 'facebook';
}elseif ($_REQUEST['from'] == 'website'){
$this->layout = 'res';
}elseif ($_REQUEST['from'] == 'mobile'){
$this->layout = 'mobile_layout';
$this->render( 'mobile' );
};
$this->newSession();
$msg[0] = array(); // 0 = bad messages
$msg[1] = array(); // 1 = good messages
if(isset($_REQUEST['date_start'],$_REQUEST['date_end'])){
$data['Availability']['date_start'] = $_REQUEST['date_start'];
$data['Availability']['date_end'] = $_REQUEST['date_end'];
}
if(!isset($_REQUEST['voucher_code'])){
$_REQUEST['voucher_code'] = 0;
}
移动视图中的一个错误,res_控制器中的第83行是$this->render('mobile');:
调用
Controller::render
时,我相信视图会立即呈现(并返回)。因此,在调用之前,您必须设置视图所期望的任何变量。我是否应该将网站、facebook和移动支票放在函数末尾,以便在函数设置var并进行计算之后?我剥离了其他视图作为测试,是的,问题在于$this->render('mobile');因为手机本身可以工作。
Notice (8): Undefined variable: availability [APP/views/res/mobile.ctp, line 16]
Code | Context
include - APP/views/res/mobile.ctp, line 16
View::_render() - CORE/cake/libs/view/view.php, line 731
View::render() - CORE/cake/libs/view/view.php, line 426
Controller::render() - CORE/cake/libs/controller/controller.php, line 909
ResController::availability() - APP/controllers/res_controller.php, line 83
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
[main] - APP/webroot/index.php, line 83