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
Что я могу сделать, чтобы включить простой файл на мои страницы?
Ответы
Ответ 1
Потяните его в зависимости от того, какие вы хотите использовать $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');
}
Ответ 2
Вы должны использовать APPPATH
или BASEPATH
или просто введите полный путь к файлу.
Для безопасности require_once
должен быть передан локальный файл, а не URL. Я бы не предложил использовать require_once()
в CodeIgniter. Лучше использовать:
$this -> load -> view('common_file');
Ответ 3
Как сделать глобальные функции в CodeIgnitor
Чтобы создать глобальные функции, определите их в CodeIgnitor Helper и автонагрузка их. Вот как:
Создайте своего помощника
Чтобы создать [помощники] [2], создайте файл .php в папке application/helpers/
и сохраните там свои функции.
Примечание. Рекомендуется использовать следующий формат, чтобы избежать конфликтов имен функций:
if ( ! function_exists('my_function_name'))
{
function my_function_name($arg)
{
/* Your code here */
}
}
Создание Them Global
Если вы используете эти функции все время (Global), автоматически загружайте их.
- Откройте файл:
/config/autoload.php
- Найдите раздел
$autoload['helper'] = array();
- Добавьте имя вашего вспомогательного файла (за исключением расширения the.php).
Например, если вы создали вспомогательный файл с именем myhelper.php, он должен выглядеть примерно так:
$autoload['helper'] = array('myhelper');
Использование глобальных функций
Теперь ваши функции будут доступны на всем сайте. Просто назовите их оптом:
my_sample_function('argument');
Ответ 4
-
base_url()
ссылается на веб-путь, например http://localhost/myproject/
. Вы не можете включить удаленный файл, на самом деле вы не должны. Это риск для безопасности. См. Невозможно включить файл на удаленном сервере
-
Создание пользовательской библиотеки - хороший выбор, и если вы ее много используете на своем веб-сайте, вы можете включить его в application/config/autoload.php
в разделе $autoload['libraries']
. Он будет автоматически загружаться при каждом повторном загрузке приложения/веб-сайта на основе codeigniter. Пример: $autoload['libraries'] = array('common');
, если ваша библиотека называется common.php
и находится в application/libraries/
-
НЕ помещать функции в программу просмотра, поэтому библиотеки и помощники существуют. Зритель должен содержать только то, что должен видеть пользователь. Пример: представление представляет собой некоторую форму визуализации модели.
Ответ 5
Вы должны использовать APPPATH или BASEPATH или просто ввести полный путь к файлу. require_once(APPPATH.'libraries/common.php');
Ответ 6
Для более эффективного решения этой проблемы я сделал это:
Вы создаете нового помощника (в приложении/помощниках) с именем (es. 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');
}
}
Ответ 7
Вы можете включить любое программное обеспечение, используя
<?php $this->load->view('file'); ?>
Ответ 8
Вы можете написать 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');
Теперь вы можете вызвать метод. Добавьте код js в footer.php
, все функции доступны на каждой странице, которую вы можете легко использовать.