Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Route::group(array('before' => 'blocked'), function(){
//Тут ваши маршруты Route::get/post/any/controller
});
Route::filter('blocked', function(){
if(Auth::user() && Auth::user()->blocked == 1){
App::abort(403); //Перекидываем на страницу доступ запрещен где написано что мол вы заблокированы
}
});
Как-то так. Можно только на один маршрут login подвесить фильтрацию after и если пользователь заблокирован - то разавторизовывать его.
А что мешает роуты прикрыть фильтром after с проверкой на блокировку? Авторизуем, но если пользователь заблокирован, то перекидываем на страницу "Вы заблокированы". К тому же, мультиаков так фиксировать можно через какую-нибудь неубиваемую куку.
На мой взгляд это лучше чем тупо ошибку вываливать еще на этапе авторизации.
Мне больше нравится подход с сортировкой коллекций Illuminate\Database\Eloquent\Collection
Model::all()->sort(function($data, $key){ return mt_rand(0, 1) > 0 ? 1 : -1; });
Заполняем базу тем что дано в задаче
$data = array(
'M1' => array('P1', 'P2'),
'M2' => array('P1', 'P3'),
'M3' => array('P5'),
'M4' => array('P2'),
'M5' => array('P6')
);
foreach($data as $model => $types){
$mObj = Model::firstOrCreate(array('name' => $model));
$tmp = array();
foreach($types as $type){
$tObj = Prototype::firstOrCreate(array('name' => $type));
$tmp[] = $tObj->id;
}
$mObj->prototypes()->sync($tmp);
}
Находим что нужно для записи с именем М1
$current = 'M1';
$mCurrentObj = Model::firstOrNew(array('name' =>$current));
$pCurrent = $mCurrentObj->prototypes()->get()->lists('name');
print_r($pCurrent);
$mOut = array();
if(!empty($pCurrent)){
foreach(Prototype::whereIn('name', $pCurrent)->get() as $pObj){
$mFind = $pObj->models()->where('model_prototype.model_id', '!=', $mCurrentObj->id)->get();
$mOut = array_merge($mOut, $mFind->lists('name'));
}
$mOut = array_unique($mOut, SORT_STRING);
}
print_r($mOut);
Поставьте пакет kmd/logviewer для просмотра через браузер. Или сразу смотрите в папку /app/storage/logs/
$film = Film::firstOrCreate(array('name' => 'Человек паук 3D'));
$film->events()->sync(array(1, 2, 3));
В таблице "Actions Handled By Resource Controller" на странице с документацией http://laravel.com/docs/controllers#res … ontrollers смотрите столбец Route Name.
В Laravel 4 версии не используются bundles
http://stackoverflow.com/questions/1586 … l-a-bundle
Для laravel вызов $brandsize->brand и $brandsize->brand() разнозначен
Я о том, что подгрузка данных в brand при обращении без Eager Loading и с ней происходит по разному. В одном случае всегда принудительно получаются данные, т.к. функция вызывается в явном виде. А в другом случае данные загружаются только в момент обращения к ним. И если данные еще не получены, то срабатывает вызов функции __get() в которой происходит прямой перебор всех доступных ключей. И я предположил, что именно из-за этого перебора возникает проблема с акселератором.
Перечитайте мое предыдущее сообщение еще раз и посмотрите класс \Illuminate\Database\Eloquent\Model - может поймете что я имел в виду.
http://laravel.com/docs/routing#sub-domain-routing
Route::get('/', array('as' => 'home', function()
{
return 'home';
}));
Route::get('login', array('as' => 'login', function($account, $id)
{
return 'login'
}));
Route::group(array('domain' => 'foo.example.com'), function()
{
Route::get('/', array('as' => 'foo.home', function()
{
return 'home';
}));
});
link_to_route('home', 'main home');
link_to_route('foo.home', 'foo home');
link_to_route('login', 'login');
Не вижу принципиальной разницы между $brandsize->brand() и $brandsize->brand
Ну вообще $brandsize->brand, по логике php это переменная. А $brandsize->brand() - функция. Не могу утверждать как ведет себя в данном случае laravel, но предполагаю, что при обращении к brand как к переменной, происходит перегрузка при помощи магической функции __get. В то время, как при использовании различных php акселераторов, в некоторых случаях эта перегрузка не срабатывает. И использование with может позволить решить эту проблему.
Вот примерно такая у меня логика, но могу ошибаться, т.к. код не узчал. Поэтому поправьте меня если я не прав.
Спасибо за ссылки, но речь идет не только о меню но и вообще о ссылках, размещенных в произвольных блоках сайта
В таком случае все очень индивидуально и очень сильно зависит от маршрутов на вашем сайте. В некоторых случаях достаточно проверки вида:
Route::currentRouteName() == 'news.list'
А в некоторых без такой проверки не обойтись:
Request::is('news/list*')
Если речь идет о функциях link_to_*, то вызов становится примерно таким (см. 4 параметр)
link_to_route('route.name', $title, $parameters, array(
'class' => ((Route::currentRouteName() == 'news.list') ? 'active' : 'inactive')
));
Судя по конструкции
@if($brandsize->brand())
@endif
Вы делаете что-то вроде костыля для подгрузки брендов чтобы потом использовать $brandsize->brand?. Не проще ли тогда использовать with? Попробуйте заменить ваш костыль на
Brandsize::with('brand')
при формировании переменной $brandsize. Я более чем уверен, что это решит вашу проблему.
Поиск по запросу Laravel menu на GitHub выдает вполне удобоваримые решения:
https://github.com/witooh/laravel-menu-builder
https://github.com/ferleonardo/laravel-menu
https://github.com/overturelabs/menu
Proger_XP пишет:}%> Да и вообще странно что в базовом комплекте для работы с изображениями в Laravel нет чего-то подобного
Нельзя ведь всё на все случаи жизни в фреймворк добавлять, он и так уже раздутый.Да, но изображения - это базовый элемент сайта, по мне так это должно быть из коробки.
За код спасибо большое, интересное решение, поковыряюсь ))).
Composer позволяет коробку сделать любого размера и цвета;-)
У всех свои предпочтения. Но лично я использую Intervention Image через свою хелпер функцию в которой генерируется имя для будущего кеш-файла, проверяется дата изменения оригинального файла и т.д. Код приводить не буду, т.к. по большей части он не завязан на эту библиотеку и само сжатие довольно примитивное
Image::make($file)->resize($w, $h, true)->save($cacheFile, 96);
Мистика какая-то.
/** Все книги с переводчиками */
$books = Book::has('translators')->get();
foreach($books as $book){
//...
}
/** проверка на наличие переводчиков у книги */
$books = Book::with('translators')->get();
foreach($books as $book){
if($book->translators->count()){
//... Есть переводчик
}
}
И что тут может не работать? Т.е. не так. Если не работает, то скорее всего модель со связями составлена не корректно.
Настраивали коннект к базе данных? localhost? Если да, то впишите 127.0.0.1 и будет самолет.
Это уже избитая проблема Win7/8
1) Создать файл ru.php с классом Date_HumanDiff_Locale_ru в любом удобном месте и закинуть его в autoload files composer'a
2) До принятия PR воспользоваться форком добавив в composer.json repositories
{
"type":"package",
"package":{
"name":"AgelxNash/Date_HumanDiff",
"version":"0.4.1",
"source":{
"type":"git",
"url": "https://github.com/AgelxNash/Date_HumanDiff",
"reference":"master"
},
"autoload": {
"files": [
"src/Date/HumanDiff/Locale/ru.php"
]
}
}
}
Страницы 1