1

StackOverflow で同様のトピックを読みましたが、残念ながらこの問題に対処したものはありません (または、適切なトピックを見ていないだけかもしれません)。

ビューには次のものがありますhome.php

<?php include_once(echo base_url() .'/template/layout/header.php'); ?>

今、私の構造は次のようになっています:

/public_html
    /template
    /layout
       /header.php
       /footer.php

ファイルが含まれていません。理由を知っている人はいますか?

注:私はに設定$config['base_url']しましたwww.domain.com

4

3 に答える 3

2

ドキュメントごとbase_url()

site_url()この関数は、index_page または url_suffix を追加せずに、と同じものを返します。

http://www.domain.com/したがって、これを使用するのは間違っているので、返す必要がありますinclude_once()

使用したいのはCI定数APPPATHです:

<?php include_once(APPPATH . 'template/layout/header.php'); ?>

前に述べたように、ビューをビュー フォルダに入れ、ビューを含める代わりにロードする必要があります。これが正しい CI メソッドです。

于 2013-04-17T22:11:17.363 に答える
0
<?php include_once(echo base_url() .'/template/layout/header.php'); ?>

ここであなたは2つのことを間違っています。

  1. コードの include_once 内にエコーを含めないでください。だからあなたのコードは

include_once(base_url() .'/template/layout/header.php');

  1. 絶対パスの代わりに URL を使用してファイルをロードしようとしています。php.ini allow_url_open がオフに設定されている場合、 base_url (サイト URL http://www.domain.com/を返す) を使用してファイルを含めることはできません。

str_replace(SYSDIR.'/', '',BASEPATH) を使用して、ベースへの絶対パスを取得できます。

したがって、以下のコードが機能します。

$abs_path = str_replace(SYSDIR.'/', '',BASEPATH);
include_once($abs_path .'/template/layout/header.php');

上記の2つの投稿で述べられているように、CIでこれを行う正しい方法は、ビューフォルダー内に配置し、CIロード機能を使用してロードすることです。

于 2013-04-18T02:36:26.240 に答える