определять пользовательские переменные и прямое обращение к переменным в виде части

Я хочу создать файл типа my_custom_settings.php в каталоге config и вызвать определенную переменную в виде.

скажем, в my_custom_settings.php :

 define('TEMPLATE_DIR', 'assets/front'); 

и в прямой части зрения в HTML:

 <link href="<?=TEMPLATE_DIR?>/stylesheet/style.css"> 

или любое другое альтернативное решение?

PS: Теперь я использую base_url() для доступа к пути

лично я расширяю /core/helpers/url_helper.php, по умолчанию – site_url() , base_url(), current_url(); и т. д. Я просто расширил это, имея base_static_url();

поэтому добавьте core / helpers / url_helper.php:

 if ( ! function_exists('base_static_url')) { function base_static_url() { $CI =& get_instance(); return $CI->config->slash_item('base_static_url'); } } 

то в файле config.php вы просто добавляете еще одну строку:

 $config['base_url'] = "http://mysite.com/"; $config['base_static_url'] = "http://mysite.com/static/"; //path to your static resources folder 

то вы можете вызвать статические ресурсы, используя:

 <img src="<?php echo base_static_url();?>img/myimage.png"/> 

ok, это может быть больше того, что вы ищете, но это способ разместить настройки сайта в одном файле, а затем легко их использовать

в папке конфигурации у вас есть файл: my_custom_settings.php

в этом файле вы хотите установить значение конфигурации, например:

 $config['TEMPLATE_DIR'] = 'assets/front' ; $config['site_slogan'] = 'Laravel? Never heard of it' ; 

создайте еще один файл: My_custom_settings.php

поместите этот файл в: application / library / My_custom_settings.php, который будет содержать:

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class My_custom_settings { function __construct($config = array() ) { foreach ($config as $key => $value) { $data[$key] = $value; } // makes it possible for CI to use the load method $CI =& get_instance(); // load the config variables $CI->load->vars($data); } } // end my custom settings 

теперь в вашем контроллере контроллера

 public function __construct() { parent::__construct(); // Load configs for controller and view $this->load->library( 'my_custom_settings' ); $this->config->load( 'my_custom_settings' ); } // end construct 

Теперь для крутой части – все, что вы помещаете в этот файл конфигурации, будет доступно для вашего контроллера и просмотров. (вы также можете загрузить конфигурацию в конструктор модели).

в контроллере или модели вы получаете значение с помощью $ this-> config, например

 $this->config->item( 'site_slogan' ) 

немного неудобно, но для просмотров, heres вознаграждение, вам нужно только имя конфигурации

 echo $TEMPLATE_DIR . '/somefile' ; 

Изображения, css, javascript, pdfs, xml … все, что разрешено для доступа напрямую, не должно проживать в вашем каталоге приложений. Вы можете это сделать, но вы действительно не должны. Создайте новую папку в корне вашего каталога для этих файлов, их не следует смешивать с вашим приложением, например: в вашей папке views.

  1. Скорее всего, вы используете файл .htaccess, который позволяет доступ к некоторым каталогам через http. Это очень хорошо по соображениям безопасности, вы хотите прекратить любую попытку напрямую обращаться к вашим контроллерам и моделям. Именно поэтому мы проверяем, определен ли BASEPATH в верхней части большинства файлов, и выйдите («Нет прямого доступа к скрипту»), если нет.

  2. Чтобы получить правильный путь к этим ресурсам (js / css / images), вы не можете использовать относительные пути, потому что мы не используем обычную структуру каталогов. URL / users / login не загружает файлы из каталога / users / login, он, вероятно, даже не существует. Это просто сегменты uri, которые использует bootstrap, чтобы знать, какой класс, метод и параметры использовать. Чтобы получить правильный путь, используйте либо косую черту (если ваше приложение и активы находятся в корневом каталоге, а не в подкаталоге):

    Или ваш лучший выбор, используйте абсолютный URL:

    // Ссылки на ваш $ config ['base_url'] "/> Эквивалент:

    http://mydomain.comhttps://stackoverflow.com/images/myimage.jpg В CI встроены помощники, которые вы также можете использовать, но это действительно все, что вам нужно знать.