まず問題を説明します
ホームページの Index の下で検索し、次に Show モジュールの下の show テンプレート出力に検索結果を割り当てます。
class IndexAction extends Action {// これが Index モジュールです
public functionindex() {
/ /echo session("uid");
$this->display()
}
パブリック関数 dosearch(){//ファジー クエリ
$user = M('user'); $_REQUEST[ 'keysearch'];
//$where['username'] = $key;
$where['username'] = array("like",array("%$key","$key%") ));
import('ORG.Util.Page') // ページング クラスをインポートします
//$data=$user->where($where)->select(); >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); assign('page',$show);// ページング出力を割り当てます
$this->display('Show/show') // 検索結果を Show モジュールの show Model 出力に割り当てます
}
ただし、検索フォームが送信されると、アドレスは http://www.tanss.com/alumni/index.php/Index/dosearch になります
実際には、これで問題ないようですが、操作を実行する必要がありますこの検索の結果、メッセージを残す、詳細を表示するなどの操作を行うため、Show モジュールでメッセージを書き込んだり、詳細を表示したりすると、不正な操作を示すエラーが報告されます。このような問題がありますか?パブリック関数 show(){
$this->display();
パブリック関数 domessage() {
$message = M('message')
$data['content'] = $_POST; ['メッセージ']; $data['time'] = date('y-m-d h:i:s',time ());}
送信後にエラーが報告されました
不正な操作: domessage
エラーの場所エラーの場所
FILE: D:phpdemoalumniThinkPHPCommonfunctions.php LINE: 112
エラーの場所
FILE: D :phpdemoalumniThinkPHPCommonfunctions.php LINE: 112
フォームに送信されたアドレスを見てください
エラーを投稿して確認してください
これは Show
クラスの下に書かれた新しいメソッドです ShowAction extends Action{
投稿する エラーを報告して確認してください
これは Show
クラスに新しく書かれたメソッドです ShowAction extends Action{
public function show(){
$this->display();
}
public function domessage(){
$message = M ('メッセージ');
$data['content'] = $_POST['message']
$data['time'] = date('y-m-d h:i:s',time()); message->add($data);
$this->redirect('Show/show');
}
}
送信後にエラーが報告されました
不正な操作: domessage
エラーの場所
FILE: D : phpdemoalumniThinkPHPCommonfunctions.php LINE: 112
assign はもう利用できない可能性があります。リダイレクトのパラメータとして Show/show に渡してから、show メソッドを使用して割り当ててからダイアログを実行する必要があります。うーん、リダイレクトが使用されている場合、assign は実際には役に立たないので、redirect パラメーターを Show コントローラーの下に渡すのはどうすればよいでしょうか?
Show コントローラーの show メソッド redirect('Show/show',array('users'=>$mohulist,'page'=>$show)) 次に、ショー内で $mohulist = $_GET[ を使用しますメソッド 'mohulist']; $page = $_GET['page'];
show の記述は $mohulist = $_GET['users']; です。
Show コントローラーの show メソッド redirect('Show/show',array('users'=>$mohulist,'page'=>$show)) 次に、ショー内で $mohulist = $_GET[ を使用しますメソッド 'mohulist']; $page = $_GET['page'];
Indexx の Dosearch メソッド
public function dosearch(){//Fuzzy query
$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 メソッドを表示します
$mohulist = $_GET['mohulist']
$page = $_GET['page']; display();
}
クエリの送信後にエラー Not Found が報告されました
リクエストされた URL /alumni/index.php/Show/show/users//page/+1+æ?¡ è®°å½?+1/1+é¡このサーバーには µ++++++++++.html が見つかりませんでした
さらに、コントローラーに header('content-type:text/hmtl;charset=utf-8'); を追加して報告しました。エラーが発生しました。なぜまだ文字化けが発生しますか? diaplay
うーん、 redirect を使用する場合、 assign は確かに役に立たないので、このリダイレクトパラメーターを渡すにはどうすればよいですか? redirect(Show/show) は Show コントローラーの下の show メソッドですか?
Show コントローラーの show メソッド redirect('Show/show',array('users'=>$mohulist,'page'=>$show)) 次に、ショー内で $mohulist = $_GET[ を使用しますメソッド 'mohulist']; $page = $_GET['page'];
Indexx の Dosearch メソッド
public function dosearch(){//Fuzzy query
$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 メソッドを表示します
$mohulist = $_GET['mohulist']
$page = $_GET['page']; display();
}
クエリの送信後にエラー Not Found が報告されました
リクエストされた URL /alumni/index.php/Show/show/users//page/+1+æ?¡ è®°å½?+1/1+é¡このサーバーには µ++++++++++.html が見つかりませんでした
さらに、コントローラーに header('content-type:text/hmtl;charset=utf-8'); を追加して報告しました。エラー なぜまだ文字化けしたコードが存在するのですか?
これをリダイレクトパラメータとして Show/show に渡し、show メソッドを通じて割り当てる必要があります。
$show をシリアル化して渡してから、逆シリアル化して戻す必要があります。しかし、これは非常に反人間的な操作です
うーん、わかりました、私は PHP を学んだばかりで、皆さんがコントローラーの問題をどのように処理するかを知りたいだけです。OK、U メソッドを使用してください。お疲れ様でした。