Любимая Kohana Tips & Features? [закрытый]

Вдохновленный другим сообществом wikis, я интересуюсь слушанием о менее известных подсказках Kohana, приемах и функциях.

  • Включайте только одну подсказку на ответ.
  • Добавьте версии Kohana при необходимости.

Это - общественная Wiki.

61
задан 6 revs, 5 users 59% 3 May 2012 в 14:58
поделиться

6 ответов

Проверка внутреннего запроса

Они известны как подзапросы. Взгляните на статью Сэма де Фрейссинца: Масштабирование веб-приложений с помощью HMVC для более подробного объяснения. Обратите внимание на разницу между версиями в начальном и экземпляре.

Kohana 3.1

if (Request::initial() !== Request::current())
{
    print 'Internal called made with Request::factory';
}

Kohana 3.0

if (Request::instance() !== Request::current())
{
    print 'Internal called made with Request::factory';
}
9
ответ дан 24 November 2019 в 17:08
поделиться

Добавление данных в поворотные таблицы с помощью ORM

Функция ORM add принимает третий параметр, в котором можно указать дополнительные данные для сохранения в 1pivot table1.

Например, если у пользователя много ролей, а у роли много пользователей (через таблицу с именем 1roles_users1), вы можете сохранить информацию в 1pivot table1, передав массив ключей столбцов и значений данных в качестве третьего аргумента методу add.

Kohana 3.1

Не поддерживается. Альтернативой может быть загрузка pivot table и добавление данных, как в любой другой таблице.

Kohana 3.0

$user->add('role', $role, array('date_role_added' => time()));

where $role is ORM::factory('role', array('name' => 'user'));

15
ответ дан 24 November 2019 в 17:08
поделиться

Показать последний выполненный запрос

Kohana 3.1 и 3.0

echo Database::instance()->last_query

Взято из Как в Kohana 3 определять ошибки, допущенные во время запроса? .

17
ответ дан 24 November 2019 в 17:08
поделиться

Разница между this-> request-> route-> uri () и this-> request-> uri () (Kohana 3)

// Current URI = welcome/test/5 
// Using default route ":controller/:action/:id"

// This returns "welcome/test/5"
echo $this->request->uri(); 

// This returns "welcome/test1/5"
echo $this->request->uri(array( 'action' => 'test1' )); 

// This returns "welcome/index"
echo $this->request->route->uri();

// This returns "welcome/test1"
echo $this->request->route->uri(array( 'action' => 'test1' ));

Как вы можете видите, $ this-> request-> route-> uri () использует текущие значения маршрута по умолчанию (id равен нулю), а $ this-> request-> uri () применяет текущие сегменты uri.

15
ответ дан 24 November 2019 в 17:08
поделиться

Поддерживаемые маршруты

Вместо жесткого кодирования местоположений привязок в HTML и PHP рекомендуется использовать обратную маршрутизацию. По сути, это означает, что вы определяете местоположения маршрута, а затем используете их; Если вам когда-нибудь понадобится изменить местоположение, это делается в одном месте, а не в сотнях.

Маршруты можно определять где угодно, но рекомендуется помещать их в загрузочную программу приложения или загрузку модулей (init.php).

Они задаются следующим образом:

Route::set('name', '<controller>(/<action>)', array('action' => 'login|logout');
  1. Имя маршрута
  2. Путь URL-адреса для сопоставления.
  3. Регулярное выражение, ограничивающее сопоставление .

Если часть заключена в квадратные скобки, она не является обязательной. Если пользователь не предоставил деталь, а вы хотите указать значение по умолчанию, используйте метод defaults для указания значений.

->defaults(array('action' => 'login'));

Кохана 3.1 и 3.0

Следующий код теперь используется для создания обратимых маршрутов. Путь URL-адреса можно обновить, и все ваши URL-адреса должны работать как раньше.

Route::url('name', array('controller' => 'user', 'action' => 'login'));
11
ответ дан 24 November 2019 в 17:08
поделиться

Генерация опций Form::select() из результата базы данных

Kohana 3.1 и 3.0

$options = ORM::factory('model')
 ->order_by('title','ASC')
 ->find_all()
 ->as_array('id','title');

$select = Form::select('name', $options);

Следует отметить, что это не ограничивается ORM и может быть использовано для всех результатов базы данных (все они поддерживают as_array). Более подробную информацию смотрите в результаты баз данных.

Если вы хотите добавить опцию по умолчанию:

$options = Arr::merge(array('Please select a value.'), $options);
23
ответ дан 24 November 2019 в 17:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: