Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 19 мар 2024, 16:42

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 03 июл 2013, 01:50 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Вот короткое решение для записи в конфиг:
Код:
<?php defined('SYSPATH') or die('No direct script access.');
/**
 * Class Config_Group
 */
class Config_Group extends Kohana_Config_Group
{
    /**
     * Write to config file
     */
    public function save()
    {
        if ($files = Kohana::find_file('config', $this->_group_name))
        {
            $contents = Kohana::FILE_SECURITY . "\n\nreturn " . var_export($this->getArrayCopy(), true) . ';';

            file_put_contents(array_pop($files), $contents);
        }
    }
}
 

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 08:15 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
AmberLEX> PHP_EOL используйте, array_pop($files) не для всех случаев подходит - этого я не учел

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 10:22 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Забываю я про PHP_EOL)
array_pop я проверял, прописывал в application/config и в 2-х модулях такой же config с таким же именем, но наверное не так подробно, для каких случаев не подходит?
Я кстати, к нему так и пришел, когда смотрел зачем нужен $filename = $files[count($files)-1];

вот 3 файла в application/config
app.php
app0.php
app1.php

их же забросил в
modules/auth/config
modules/databse/config
system/config

В контроллере
Код:
$this->_settings  = Kohana::$config->load('app');
$this->_settings0 = Kohana::$config->load('app0');
$this->_settings1 = Kohana::$config->load('app1');

$this->_settings0['sitename'] = 'xxx';
$this->_settings0->save();
 

Вот что выдает save()
Код:
$files = Kohana::find_file('config', $this->_group_name)
print_r($files);
print_r(array_pop($files));

Array
(
    [0] => /home/http/kohana330/system/config/app0.php
    
[1] => /home/http/kohana330/modules/database/config/app0.php
    
[2] => /home/http/kohana330/modules/auth/config/app0.php
    
[3] => /home/http/www/mysite/application/config/app0.php
)

/
home/http/www/mysite/application/config/app0.php

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 11:08 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
AmberLEX> массив возвращается только когда найдено несколько файлов, если он один возвращает соответственно строку

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 11:14 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Если найден один файл возвращается массив из одного элемента, array_pop работает

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 11:18 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
AmberLEX> ты код посмотри лучше, там у метода доп. условие имеется
public static function find_file($dir, $file, $ext = NULL, $array = FALSE)
boolean $array = bool FALSE - Return an array of files?
Return Values
array - A list of files when $array is TRUE
string - Single file path


http://kohanaframework.org/3.3/guide-ap ... #find_file

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 11:24 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
if ($array OR $dir === 'config' OR $dir === 'i18n' OR $dir === 'messages')
{...}
else
{ // тут строка }
Так вроде бы речь идет о записи в конфиг а не в любой файл

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 11:28 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
В методе save() четкий вызов метода с нужными параметрами для записи в конфиг
Kohana::find_file('config', $this->_group_name)
О какой строке идет речь?

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 11:31 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
AmberLEX> точно, в случае с конфигами ты прав, я просто не только для конфигов использую подобный код

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 12:10 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
После часа поиска несуществующего бага вариант для записи в конфиг. Ура! :)
Код:
/**
 * Write to config file
 */
public function save()
{
    if ($files = Kohana::find_file('config', $this->_group_name))
    {
        $contents = Kohana::FILE_SECURITY.PHP_EOL.'return '.var_export($this->getArrayCopy(), true).';';

        file_put_contents(array_pop($files), $contents);
    }
}
 

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group