Вдохновленный другим сообществом wikis, я интересуюсь слушанием о менее известных подсказках Kohana, приемах и функциях.
Это - общественная Wiki.
Они известны как подзапросы. Взгляните на статью Сэма де Фрейссинца: Масштабирование веб-приложений с помощью HMVC для более подробного объяснения. Обратите внимание на разницу между версиями в начальном и экземпляре.
if (Request::initial() !== Request::current())
{
print 'Internal called made with Request::factory';
}
if (Request::instance() !== Request::current())
{
print 'Internal called made with Request::factory';
}
Функция ORM add
принимает третий параметр, в котором можно указать дополнительные данные для сохранения в 1pivot table1.
Например, если у пользователя много ролей, а у роли много пользователей (через таблицу с именем 1roles_users1), вы можете сохранить информацию в 1pivot table1, передав массив ключей столбцов и значений данных в качестве третьего аргумента методу add
.
Не поддерживается. Альтернативой может быть загрузка pivot table
и добавление данных, как в любой другой таблице.
$user->add('role', $role, array('date_role_added' => time()));
where $role
is ORM::factory('role', array('name' => 'user'));
echo Database::instance()->last_query
Взято из Как в Kohana 3 определять ошибки, допущенные во время запроса? .
Разница между 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.
Вместо жесткого кодирования местоположений привязок в HTML и PHP рекомендуется использовать обратную маршрутизацию. По сути, это означает, что вы определяете местоположения маршрута, а затем используете их; Если вам когда-нибудь понадобится изменить местоположение, это делается в одном месте, а не в сотнях.
Маршруты можно определять где угодно, но рекомендуется помещать их в загрузочную программу приложения или загрузку модулей (init.php).
Они задаются следующим образом:
Route::set('name', '<controller>(/<action>)', array('action' => 'login|logout');
. Если часть заключена в квадратные скобки, она не является обязательной. Если пользователь не предоставил деталь, а вы хотите указать значение по умолчанию, используйте метод defaults для указания значений.
->defaults(array('action' => 'login'));
Следующий код теперь используется для создания обратимых маршрутов. Путь URL-адреса можно обновить, и все ваши URL-адреса должны работать как раньше.
Route::url('name', array('controller' => 'user', 'action' => 'login'));
$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);