私はcodeigniterにかなり慣れていません。私はphpを知っています。
正しいビューをロードするにはどうすればよいですか?
私のURL:/ blog / this-is-my-title
私はコントローラーに次のようなことを伝えました
end($ this-> uri-> segment_array())がDBに存在する場合は、このデータを何らかのビューにロードします。
/ blog/whateverにアクセスするたびに404エラーが発生します
何が間違っているのですか?
私はcodeigniterにかなり慣れていません。私はphpを知っています。
正しいビューをロードするにはどうすればよいですか?
私のURL:/ blog / this-is-my-title
私はコントローラーに次のようなことを伝えました
end($ this-> uri-> segment_array())がDBに存在する場合は、このデータを何らかのビューにロードします。
/ blog/whateverにアクセスするたびに404エラーが発生します
何が間違っているのですか?
ルーティングを使用していない限り、 CIは、もちろん存在しない/blog/this-is-my-title
というメソッドを探しているため、URLは常に404になります。this-is-my-title
簡単な修正方法は、投稿表示コードを別の関数に配置し、URLを編集して次のような投稿にアクセスすることです。/blog/view/the-post-title
次のようなルート:
$route['blog/(:any)'] = "blog/view/$1";
URIを「/blog/ this-is-my-title」のままにしておきたい場合は、必要なことを達成することもできます。
より多くの可能性があるかもしれません:
コントローラが存在しないか、間違ったフォルダに配置されています
提案:データを変更するだけでよい場合は、同じコントローラーで別のビューを使用してください
もし何か) {
$ this-> load-> view('whatever');
}
そうしないと
{$ this-> load-> view('somethingelse'); }
これらの作業のいずれも.htaccessのコードと構成のサンプルを投稿していない場合は、確認します。
この問題を解決する最善の方法は、コントローラーを再マップすることです。そうすれば、同じコントローラーを使用して他のことも実行できます。
ルーティングは必要ありません!
enter code here
<?php
class Blog extends Controller {
function __construct()
{
parent::__construct();
}
public function _remap($method, $params = array())
{
if (method_exists($this, $method))
{
$this->$method();
}
else
{
$this->show_post();
}
}
function index()
{
// show blog front page
echo 'blog';
}
function edit()
{
// edit blog entry
}
function category()
{
// list entries for this category
}
function show_post()
{
$url_title = $this->uri->segment(2);
// get the post by the url_title
if(NO RESULTS)
{
show_404();
}
else
{
// show post
}
}
}
?>