codeigniter包括视图中的公共文件

时间:2013-05-08 17:00:23

标签: php codeigniter

大家好我有一个在codeigniter中开发的网站,我想存储到一个名为common.php的文件中,我在很多页面中使用了一些javascript / PHP函数。 我试过这种模式:

require(base_url().'application/libraries/common.php'); //I have tried also include

这回复了我这个错误:

A PHP Error was encountered

Severity: Warning

Message: require() [function.require]: http:// wrapper is disabled in the server configuration by allow_url_include=0

我要去我的php.ini,然后打开allow_url_include,重新启动apache,当我尝试加载页面时,现在返回给我错误:

A PHP Error was encountered

Severity: Warning

Message: require() [function.require]: http:// wrapper is disabled in the server configuration by allow_url_include=0

Filename: backend/hotel_view.php

Line Number: 6

A PHP Error was encountered

Severity: Warning

Message: require(http://demo.webanddesign.it/public/klikkahotel.com/application/libraries/common.php) [function.require]: failed to open stream: no suitable wrapper could be found

Filename: backend/hotel_view.php

Line Number: 6


Fatal error: require() [function.require]: Failed opening required 'http://demo.webanddesign.it/public/klikkahotel.com/application/libraries/common.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/public/klikkahotel.com/application/views/backend/hotel_view.php on line 6

如何将简单文件添加到我的网页中?

8 个答案:

答案 0 :(得分:32)

使用$this->load->view('common');将其拉入您想要的任何视图中。您可以从控制器或视图中包含其他视图。

示例1

your_controller.php

public function index() {
   $this->load->view('homepage');
}

视图/ homepage.php

<?php
$this->load->view('common');
?>

<body>
  <!-- html -->
</body>

示例2

your_controller.php

public function index() {
  $this->load->view('common');
  $this->load->view('homepage');
}

答案 1 :(得分:2)

您应该使用APPPATHBASEPATH或只输入文件的完整路径。

为了安全起见,require_once应该传递本地文件,而不是URL。我不建议在CodeIgniter中使用require_once()。最好使用:

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

答案 2 :(得分:2)

如何在CodeIgnitor中创建全局函数

要创建全局功能,请在 CodeIgnitor Helper 文件中定义它们,然后自动加载。以下是:

创建助手

要创建[helpers] [2],请在application/helpers/文件夹中创建一个.php文件,并在那里保存您的功能。

注意:最好使用以下格式,以避免函数名称冲突:

if ( ! function_exists('my_function_name'))
{
    function my_function_name($arg)
    {
        /* Your code here */

    }
}

让他们全球化

如果您一直使用这些功能(全局),请自动加载它们。

  1. 打开文件:/config/autoload.php
  2. 找到$autoload['helper'] = array();
  3. 部分
  4. 添加帮助文件的名称(不包括.php扩展名)。
  5. 例如,如果您创建了一个名为myhelper.php的帮助文件,它应该如下所示:

    $autoload['helper'] = array('myhelper');

    使用全局函数

    现在您的功能将在整个网站上提供。只需称它们为批发商:

    my_sample_function('argument');

答案 3 :(得分:1)

  1. base_url()指的是http://localhost/myproject/之类的网络路径。您不能包含远程文件,实际上您不应该包含远程文件。这是一个安全风险。请参阅Can't include file on remote server

  2. 构建自定义库是一个不错的选择,如果您在网站中大量使用它,可以在application/config/autoload.php下的$autoload['libraries']部分中添加它。每次重新加载基于codeigniter的应用程序/网站时,它都会自动加载。示例:$autoload['libraries'] = array('common');如果您的资源库名为common.php并且位于application/libraries/

  3. 不要将函数放入查看器中,这就是库和帮助程序存在的原因。查看器应仅包含用户应该看到的内容。示例:视图是模型的某种可视化形式。

答案 4 :(得分:1)

您应该使用APPPATH或BASEPATH或只输入文件的完整路径。 require_once(APPPATH.'libraries/common.php');

答案 5 :(得分:0)

为了更有效地解决这个问题我已经这样做了:

您使用名称创建一个新的帮助程序(在应用程序/帮助程序中)(例如,common.helpers.php,下划线很重要)。在此文件中,您将所有函数(例如,html的构建部分)放在一起。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    function getHead(){
    require_once(APPPATH."views/common/head.php");
    }   

    function getScripts(){
    require_once(APPPATH."views/common/scripts.php");
    }

    function getFooter(){
    require_once(APPPATH."views/common/footer.php");
    }

在你的控制器中,你只调用一个关于MVC的视图,并从你的自定义助手调用这些函数。

class Hello extends CI_Controller {

   public function index(){
       $this->load->helper('common');
       $this->load->view('index');   
   }

}

答案 6 :(得分:0)

您可以使用

包含任何软件
<?php $this->load->view('file'); ?>

答案 7 :(得分:-2)

你可以在帮助文件中编写php函数 步骤 - 在common_helper文件夹中创建帮助文件名application/helper        - 并创建一个像

这样的函数
    function getBoosters($id){
        $ci=& get_instance();
        $ci->load->database(); 

        $sql = "select * from boosters where id ='".$id."' "; 
        $query = $ci->db->query($sql);
        return $query->result();
   }

这个常用功能可以通过加载此帮助程序来使用。

假设您想在FrontController中使用此方法,只需通过此行

加载帮助程序
$this->load->helper('common');

现在您可以调用该方法。在footer.php中添加您的js代码,所有功能都可以在您可以轻松使用的每个页面上使用