0

私はcodeigniterにかなり慣れていません。私はphpを知っています。

正しいビューをロードするにはどうすればよいですか?

私のURL:/ blog / this-is-my-title

私はコントローラーに次のようなことを伝えました

end($ this-> uri-> segment_array())がDBに存在する場合は、このデータを何らかのビューにロードします。

/ blog/whateverにアクセスするたびに404エラーが発生します

何が間違っているのですか?

4

3 に答える 3

1

ルーティングを使用していない限り、 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」のままにしておきたい場合は、必要なことを達成することもできます。

于 2011-02-08T10:39:17.067 に答える
1

より多くの可能性があるかもしれません:

  1. 最も一般的な-mod_rewriteはアクティブではありません
  2. .htaccessが正しく構成されていません(編集していない場合は/blog/index.php/whateverを試してください)
  3. コントローラが存在しないか、間違ったフォルダに配置されています

    提案:データを変更するだけでよい場合は、同じコントローラーで別のビューを使用してください

    もし何か) {

    $ this-> load-> view('whatever');

    }

    そうしないと

    {$ this-> load-> view('somethingelse'); }

    これらの作業のいずれも.htaccessのコードと構成のサンプルを投稿していない場合は、確認します。

于 2011-02-08T10:49:34.907 に答える
0

この問題を解決する最善の方法は、コントローラーを再マップすることです。そうすれば、同じコントローラーを使用して他のことも実行できます。

ルーティングは必要ありません!

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
    }
}
  }
 ?>
于 2011-07-29T17:36:18.357 に答える