Я хочу создать файл типа 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.
Скорее всего, вы используете файл .htaccess, который позволяет доступ к некоторым каталогам через http. Это очень хорошо по соображениям безопасности, вы хотите прекратить любую попытку напрямую обращаться к вашим контроллерам и моделям. Именно поэтому мы проверяем, определен ли BASEPATH в верхней части большинства файлов, и выйдите («Нет прямого доступа к скрипту»), если нет.
Чтобы получить правильный путь к этим ресурсам (js / css / images), вы не можете использовать относительные пути, потому что мы не используем обычную структуру каталогов. URL / users / login не загружает файлы из каталога / users / login, он, вероятно, даже не существует. Это просто сегменты uri, которые использует bootstrap, чтобы знать, какой класс, метод и параметры использовать. Чтобы получить правильный путь, используйте либо косую черту (если ваше приложение и активы находятся в корневом каталоге, а не в подкаталоге):
Или ваш лучший выбор, используйте абсолютный URL:
// Ссылки на ваш $ config ['base_url'] "/> Эквивалент:
http://mydomain.comhttps://stackoverflow.com/images/myimage.jpg В CI встроены помощники, которые вы также можете использовать, но это действительно все, что вам нужно знать.