19

大家好,我有一个用 codeigniter 开发的网站,我想将一些我在许多页面中使用的 javascript/PHP 函数存储到一个名为 common.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

我可以做些什么来将一个简单的文件包含到我的页面中?

4

8 回答 8

37

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

示例 1

your_controller.php

public function index() {
   $this->load->view('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');
}
于 2013-05-08T17:04:52.443 回答
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. 添加您的帮助文件的名称(不包括 .php 扩展名)。

例如,如果您创建了一个名为 myhelper.php 的帮助文件,它应该如下所示:

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

使用你的全局函数

现在,您的功能将在整个站点中可用。就叫他们批发吧:

my_sample_function('argument');

于 2014-07-20T21:06:47.183 回答
2

您应该使用APPPATHBASEPATH仅键入文件的完整路径。

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

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

于 2013-05-08T17:04:10.830 回答
1

You should use APPPATH or BASEPATH or just type the full path to the file. require_once(APPPATH.'libraries/common.php');

于 2014-07-29T12:29:07.950 回答
1
  1. base_url()指的是 web 路径,如http://localhost/myproject/. 您不能包含远程文件,实际上您不应该包含。这是一个安全风险。请参阅无法在远程服务器上包含文件

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

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

于 2013-05-08T21:40:56.077 回答
1

您可以使用任何软件

<?php $this->load->view('file'); ?>
于 2018-02-13T09:49:29.547 回答
0

为了以更有效的方式解决这个问题,我这样做了:

您创建一个新的助手(在 application/helpers 中),名称为(例如 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');   
   }

}
于 2015-10-27T14:59:29.390 回答
-2

您可以在帮助文件步骤中编写 php 函数 -common_helperapplication/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');

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

于 2015-10-05T06:29:33.360 回答