php跨控制器传值,thinkPHP 跨控制器模板输出问题

先描述下问题

在首页Index下面进行搜索,然后将搜索结果赋值给Show模块下的show模板输出,

class IndexAction extends Action {// 这里是Index模块

public function index(){

//echo session("uid");

$this->display();

}

public function dosearch(){//模糊查询

$user = M('user');

$key = $_REQUEST['keysearch'];

//$where['username'] = $key;

$where['username'] = array("like",array("%$key","$key%"));

import('ORG.Util.Page');// 导入分页类

//$data=$user->where($where)->select();

$count=$user->where($where)->count();//条件查询总数

$Page= new Page($count,3);// 实例化分页类 传入总记录数和每页显示的记录数

foreach($where as $key=>$val) {

if(!is_array($val)) {

$Page->parameter .= "$key=".urlencode($val).'&';

}

}

$show = $Page->show();// 分页显示输出

$mohulist = $user->where($where)->limit($Page->firstRow.','.$Page->listRows)->select();

$this->assign('users',$mohulist);

$this->assign('page',$show);// 赋值分页输出

$this->display('Show/show'); // 将搜索结果赋值给Show模块下的show模型输出

}

可是一旦提交搜索表单 地址就会变成 http://www.tanss.com/alumni/index.php/Index/dosearch

其实这样看似没有问题,但我需要对这个搜索的结果再进行操作,比如留言、查看详情等其他操作,所以当我在Show模块下再写留言、查看详情等方法时就会报错说非法操作,像这种问题该怎么处理呢,

回复讨论(解决方案)

贴下报错看看

贴下报错看看

这是在Show下面新写的方法

class ShowAction extends Action{

public function show(){

$this->display();

}

public function domessage(){

$message = M('Message');

$data['content'] = $_POST['message'];

$data['time'] = date('y-m-d h:i:s',time());

$message->add($data);

$this->redirect('Show/show');

}

}

提交后就报错

非法操作:domessage

错误位置

FILE: D:\phpdemo\alumni\ThinkPHP\Common\functions.php  LINE: 112

贴下报错看看

这是在Show下面新写的方法

class ShowAction extends Action{

public function show(){

$this->display();

}

public function domessage(){

$message = M('Message');

$data['content'] = $_POST['message'];

$data['time'] = date('y-m-d h:i:s',time());

$message->add($data);

$this->redirect('Show/show');

}

}

提交后就报错

非法操作:domessage

错误位置

FILE: D:\phpdemo\alumni\ThinkPHP\Common\functions.php  LINE: 112

form提交的地址看看

贴下报错看看

这是在Show下面新写的方法

class ShowAction extends Action{

public function show(){

$this->display();

}

public function domessage(){

$message = M('Message');

$data['content'] = $_POST['message'];

$data['time'] = date('y-m-d h:i:s',time());

$message->add($data);

$this->redirect('Show/show');

}

}

提交后就报错

非法操作:domessage

错误位置

FILE: D:\phpdemo\alumni\ThinkPHP\Common\functions.php  LINE: 112

form提交的地址看看

贴下报错看看

这是在Show下面新写的方法

class ShowAction extends Action{

public function show(){

$this->display();

}

public function domessage(){

$message = M('Message');

$data['content'] = $_POST['message'];

$data['time'] = date('y-m-d h:i:s',time());

$message->add($data);

$this->redirect('Show/show');

}

}

提交后就报错

非法操作:domessage

错误位置

FILE: D:\phpdemo\alumni\ThinkPHP\Common\functions.php  LINE: 112

form提交的地址看看

贴下报错看看

这是在Show下面新写的方法

class ShowAction extends Action{

public function show(){

$this->display();

}

public function domessage(){

$message = M('Message');

$data['content'] = $_POST['message'];

$data['time'] = date('y-m-d h:i:s',time());

$message->add($data);

$this->redirect('Show/show');

}

}

提交后就报错

非法操作:domessage

错误位置

FILE: D:\phpdemo\alumni\ThinkPHP\Common\functions.php  LINE: 112

form提交的地址看看

贴下报错看看

这是在Show下面新写的方法

class ShowAction extends Action{

public function show(){

$this->display();

}

public function domessage(){

$message = M('Message');

$data['content'] = $_POST['message'];

$data['time'] = date('y-m-d h:i:s',time());

$message->add($data);

$this->redirect('Show/show');

}

}

提交后就报错

非法操作:domessage

错误位置

FILE: D:\phpdemo\alumni\ThinkPHP\Common\functions.php  LINE: 112

form提交的地址看看

assign的东西可能不能用了 你需要当做redirect的参数传到Show/show 再由show方法assign再diaplay

assign的东西可能不能用了 你需要当做redirect的参数传到Show/show 再由show方法assign再diaplay

嗯嗯 如果用redirect的话,assign确实就没有用了,那这个redirect参数怎么传呢 redirect(Show/show) 即Show控制器下的show方法?

assign的东西可能不能用了 你需要当做redirect的参数传到Show/show 再由show方法assign再diaplay

嗯嗯 如果用redirect的话,assign确实就没有用了,那这个redirect参数怎么传呢 redirect(Show/show) 即Show控制器下的show方法?

Show控制器下的show方法 redirect('Show/show',array('users'=>$mohulist,'page'=>$show)) 然后在show方法用$mohulist = $_GET['mohulist']; $page = $_GET['page'];

写错了 show里是$mohulist = $_GET['users']; $show = $_GET['page'];

assign的东西可能不能用了 你需要当做redirect的参数传到Show/show 再由show方法assign再diaplay

嗯嗯 如果用redirect的话,assign确实就没有用了,那这个redirect参数怎么传呢 redirect(Show/show) 即Show控制器下的show方法?

Show控制器下的show方法 redirect('Show/show',array('users'=>$mohulist,'page'=>$show)) 然后在show方法用$mohulist = $_GET['mohulist']; $page = $_GET['page'];

Indexx下面dosearch方法

public function dosearch(){//模糊查询

$user = M('user');

$key = $_REQUEST['keysearch'];

//$where['username'] = $key;

$where['username'] = array("like",array("%$key","$key%"));

import('ORG.Util.Page');// 导入分页类

//$data=$user->where($where)->select();

$count=$user->where($where)->count();//条件查询总数

$Page= new Page($count,3);// 实例化分页类 传入总记录数和每页显示的记录数

foreach($where as $key=>$val) {

if(!is_array($val)) {

$Page->parameter .= "$key=".urlencode($val).'&';

}

}

$show = $Page->show();// 分页显示输出

$mohulist = $user->where($where)->limit($Page->firstRow.','.$Page->listRows)->select();

//$this->assign('users',$mohulist);

//$this->assign('page',$show);// 赋值分页输出

//$this->display('Show/show');

$this->redirect('Show/show',array('users'=>$mohulist,'page'=>$show));

}

Show下面的show方法

public function show(){

$mohulist = $_GET['mohulist'];

$page = $_GET['page'];

$this->display();

}

提交查询后报错Not Found

The requested URL /alumni/index.php/Show/show/users//page/+1+�记�+1/1+页++++++++++.html was not found on this server.

另外我在控制器里面都加了header('content-type:text/hmtl;charset=utf-8'); 报错为啥还出现乱码啊

assign的东西可能不能用了 你需要当做redirect的参数传到Show/show 再由show方法assign再diaplay

嗯嗯 如果用redirect的话,assign确实就没有用了,那这个redirect参数怎么传呢 redirect(Show/show) 即Show控制器下的show方法?

Show控制器下的show方法 redirect('Show/show',array('users'=>$mohulist,'page'=>$show)) 然后在show方法用$mohulist = $_GET['mohulist']; $page = $_GET['page'];

Indexx下面dosearch方法

public function dosearch(){//模糊查询

$user = M('user');

$key = $_REQUEST['keysearch'];

//$where['username'] = $key;

$where['username'] = array("like",array("%$key","$key%"));

import('ORG.Util.Page');// 导入分页类

//$data=$user->where($where)->select();

$count=$user->where($where)->count();//条件查询总数

$Page= new Page($count,3);// 实例化分页类 传入总记录数和每页显示的记录数

foreach($where as $key=>$val) {

if(!is_array($val)) {

$Page->parameter .= "$key=".urlencode($val).'&';

}

}

$show = $Page->show();// 分页显示输出

$mohulist = $user->where($where)->limit($Page->firstRow.','.$Page->listRows)->select();

//$this->assign('users',$mohulist);

//$this->assign('page',$show);// 赋值分页输出

//$this->display('Show/show');

$this->redirect('Show/show',array('users'=>$mohulist,'page'=>$show));

}

Show下面的show方法

public function show(){

$mohulist = $_GET['mohulist'];

$page = $_GET['page'];

$this->display();

}

提交查询后报错Not Found

The requested URL /alumni/index.php/Show/show/users//page/+1+�记�+1/1+页++++++++++.html was not found on this server.

另外我在控制器里面都加了header('content-type:text/hmtl;charset=utf-8'); 报错为啥还出现乱码啊

嗯嗯 按照你改的改过来了 还是报一样的错误呢 而且是有查询结果的时候才会报错 空查询或者查询没结果的都不会报错

assign的东西可能不能用了 你需要当做redirect的参数传到Show/show 再由show方法assign再diaplay

嗯嗯 如果用redirect的话,assign确实就没有用了,那这个redirect参数怎么传呢 redirect(Show/show) 即Show控制器下的show方法?

Show控制器下的show方法 redirect('Show/show',array('users'=>$mohulist,'page'=>$show)) 然后在show方法用$mohulist = $_GET['mohulist']; $page = $_GET['page'];

Indexx下面dosearch方法

public function dosearch(){//模糊查询

$user = M('user');

$key = $_REQUEST['keysearch'];

//$where['username'] = $key;

$where['username'] = array("like",array("%$key","$key%"));

import('ORG.Util.Page');// 导入分页类

//$data=$user->where($where)->select();

$count=$user->where($where)->count();//条件查询总数

$Page= new Page($count,3);// 实例化分页类 传入总记录数和每页显示的记录数

foreach($where as $key=>$val) {

if(!is_array($val)) {

$Page->parameter .= "$key=".urlencode($val).'&';

}

}

$show = $Page->show();// 分页显示输出

$mohulist = $user->where($where)->limit($Page->firstRow.','.$Page->listRows)->select();

//$this->assign('users',$mohulist);

//$this->assign('page',$show);// 赋值分页输出

//$this->display('Show/show');

$this->redirect('Show/show',array('users'=>$mohulist,'page'=>$show));

}

Show下面的show方法

public function show(){

$mohulist = $_GET['mohulist'];

$page = $_GET['page'];

$this->display();

}

提交查询后报错Not Found

The requested URL /alumni/index.php/Show/show/users//page/+1+�记�+1/1+页++++++++++.html was not found on this server.

另外我在控制器里面都加了header('content-type:text/hmtl;charset=utf-8'); 报错为啥还出现乱码啊

因为你的参数$show不是简单的字符串或数组参数,看了一下应该是个object。建议你还是在action里用U方法,U方法本来就支持跨控制器,为什么不用呢

强行要用的把$show序列化掉传过去 再反序列化回来。不过这是很反人类的操作

强行要用的把$show序列化掉传过去 再反序列化回来。不过这是很反人类的操作

嗯嗯 好的 我是刚学php 就是想了解下大家是怎么处理控制器问题的,行 就用U方法吧 辛苦你了 哥们

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值