Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Страница 404 » 20.03.2016 15:02:51

/app/Exceptions/Handler.php
добавьте (соответственно представление по своему сформулируете вывод)

public function render($request, Exception $e)
{
    if ($this->isHttpException($e)) {

        $statusCode = $e->getStatusCode();

        switch ($statusCode) {

            case '404':
                $dat = Table::get();
                return response()->view('layouts/index', [
                    'content' => view('errors/404',$data)
                ]);
        }
    }
    return parent::render($request, $e);
}

#2 Re: Laravel 5.x » замена select » 18.03.2016 18:30:30

отменить нельзя, можно только клонировать предварительно выбранные данные без селекта.

#4 Re: Laravel 5.x » замена select » 18.03.2016 14:28:38

всё зависит от более конкретного примера, навскидку как пример:

$q = Model::query();

if($a > $b):
    $q->select('field_1', 'field_2');
else:
    e$q->select('field_1', 'field_3');
endif;

$out = $q->get();

или

$select = ['field_1'];

if($a > $b):
    array_push($select, 'field_2');
else:
    array_push($select, 'field_3');
endif;

$out = Model::select(implode(',', $select))->get();

или

$out = Model::select(function($query) use ($a,$b)
{
	if($a > $b):
	    $query->select('field_1', 'field_2');
	else:
	    $query->select('field_1', 'field_3');
	endif;
})
->get();

#5 Re: Laravel 5.x » Как убрать public из адреса? » 17.03.2016 15:34:59

Romannnn пишет:

мой хостинг не даёт такую возможность, класть что-либо выше публичной папки

Странный хостинг и я бы не рискнул на таком хостинге разворачивать сайт. SSH тоже нет? Composer?

Поменяйте, так как если такие ограничения на хосте, то проблемы будут и не удобства.

#6 Re: Laravel 5.x » Как убрать public из адреса? » 17.03.2016 13:23:34

а зачем вы устанавливали Laravel в публичную директорию? Безопасность для Вас не важная? Установите нормально, и не нужно "чудить" будет.

#7 Re: Laravel 5.x » AngularJS и Blade » 15.03.2016 18:25:55

Я так юзаю <span ng-bind="someVar"></span>
Вместо {{someVar}}, в доках есть описание.

Ещё можно так

#8 Re: Laravel 4 » Former и https » 08.03.2016 11:08:52

если глобально, то

$this->app['request']->server->set('HTTPS', true);

или

$app['request']->server->set('HTTPS', true);

смотря где будете добавлять, так-же можно отфильтровать для определённой среды, к примеру

$this->app['request']->server->set('HTTPS', $this->app->environment() != 'local');

для конкретного действия, можно попробовать

URL::forceSchema("https");

Если для формы (я честно говоря с построителем Former не работал никогда, но предполагаю, что есть ссылка не на файл, а на роутер) , то нужно в роуторе прописать, типа:

Route::post('admin/news/save', [
	'https' => true, 
	'as' => 'news.save',
	'uses' => 'YourController@postSaveNews'
]);

и ссылаться уже на этот роутер

#9 Re: Laravel 5.x » Выпадающие списки по уникальным значениям из БД » 03.03.2016 01:17:48

Получаем список к примеру в контролере, групирируя по столбцу/цам, всё зависит от конкретной задачи, как пример:

$select = DB::table('table')->groupBy('unique')->lists('name', 'id');

передаём значение $select во вьюху

ну и во вьюхе выводим,  как пример:

{{ Form::select('formsel', $select) }}

#11 Re: Laravel 5.x » Возможно ли из шаблона BLADE получить мета? (title, keywords) ? » 02.03.2016 01:25:43

Я немного по другому поступаю, изначально в контролере который буду наследовать всё объявляю, типа того

class BaseController extends Controller
 {
 	public $title = [];
    public $description = null;
    public $breadcrumb = [];
    public $isAjax = false;
    // ........

    function __construct()
    {
    	array_push($this->title, Config::get('app.site_name'));

    	View::share('title', implode(' :: ', $this->title));
    	View::share('description', $this->description);
    	View::share('breadcrumb', $this->breadcrumb);
    	View::share('isAjax', $this->isAjax);
    	// .......
    }
 }

 class CatalogsController extends BaseController
 {
 	public function level_one($id)
 	{
 		$catalog = Catalog::first($id);

 		array_push($this->title,  $catalog->title);
 		$this->description,  $catalog->description);
 		// ....
 	} 	
 }

удобно, что можно несколько уровней добавлять,  к примеру каталог с вложениями, плюс доступны в любом шаблоне

#12 Re: Laravel 5.x » Laravel blade for перебор массива » 29.02.2016 20:56:00

Ковычки уберите

@for($i = 0; $i < count($dats); $i++)
      {{ $dats[$i] }}
@endfor

#13 Re: Вакансии » Медленный автокомплит » 29.02.2016 20:08:55

xxx44yyy пишет:

Это да, но если у вас удобства и скорость разработки, а тут выяснилось,  что нужен отклик, то что тогда? smile

Оптимизировать, кэшировать, к примеру - конфиг

php artisan config:cache

удалить кэш

php artisan config:clear

Кэшировать маршруы (routes)

php artisan route:cache
php artisan route:clear

Как выше мы писали

php artisan optimize --force

Использовать драйвер сесии и кэша не файловый, к примеру Memcached

app/config/session.php
app/config/cache.php

Использовать кэширование запросов в БД, к примеру

Schema::create

или

$posts = Cache::remember('posts', 60, function()
{
  return DB::table('posts')->get();
});

и.т.д

Моё личное мнение, многие увлекаются роутерами типа

Route::controller('planets', 'PlanetsController');

, чего я не сильно приветствую, как по мне, обработка таких маршрутов дольше, так как в этом случае, будут сгенерированы такие маршруты:

GET|HEAD /planets/{one?}/{two?}/{three?}/{four?}/{five?} PlanetsController@getIndex
POST /planets/add/{one?}/{two?}/{three?}/{four?}/{five?} PlanetsController@postAdd
POST /planets/edit/{one?}/{two?}/{three?}/{four?}/{five?} PlanetsController@postEdit

поиграться с автозагрузкой.

Варианты, сделать спорткар с лимузина, думаю ничем хорошим не закончится, так как изначально нужно определиться - что нужно
хотя как я уже писал выше, что у Laravel с четвёртой версии, отклик не айс (там даже в hello word он будет такой, как вы привели изначально).
Последний вариант - выбрать другую платформу (предварительно проанализировав целесообразность, затратность и.т.д)

Это лично моё мнение.

#14 Re: Вакансии » Медленный автокомплит » 29.02.2016 12:49:25

Мне если нужен отклик и проект массивный, то я использую фреймворк Phalcon, если удобства smile и скорость разработки, то Laravel.
Как говорят - под каждую задачу, свой инструмент.

#15 Re: Вакансии » Медленный автокомплит » 29.02.2016 12:39:10

xxx44yyy пишет:

где-то 230мс проходит между запросом и ответом.

Думаю что от лары лучшего не стоит ожидать, по крайней мере от 4 и 5 (у тройки отклик был на порядок быстрее).
Но можно поиграться.
1) Проверьте что-бы был debug=true в app/config/app.php (или в директории локальной среды), так как если будет в false, то ничего кэшироваться не будет
2) После этого запустите

$ php artisan optimize

3) Поиграться с этим https://www.lutro.me/posts/optimizing-f … -laravel-4

#16 Re: Laravel 5.x » Неработает cookie » 28.02.2016 02:53:03

Посмотрите в настройках куки, какой адаптер выбран, и если файловая система, то права на папку проверьте.

#17 Re: Laravel 5.x » laravel jquery php отправление данные и возвращение ответа » 12.02.2016 19:41:24

странно, чудес не бывает smile
Стукните в скайп: artdevue , так как где-то мелочь, а мы будем гадать или не обращать внимание на неё.
Или откройте доступ на время к shop com

#18 Re: Laravel 5.x » laravel jquery php отправление данные и возвращение ответа » 12.02.2016 19:26:48

а вообще, я логики немного не пойму, раз у вас нет в форме урла, для отправки, значит без аякса вы не отправите форму (разве что на ту-же страницу). Т.е. если вы не планируете отправлять форму без аякса (хотя можно предусмотреть), тогда уберите submit с формы, а поставьте  type="button", и отлавливайте по нему. Плюс, я не вижу, что вы передаёте поле comment через аякс, т.е нужно передать ещё

data: $("#form_id").serialize(),

#19 Re: Laravel 5.x » laravel jquery php отправление данные и возвращение ответа » 12.02.2016 19:19:35

ответ то пришёл, значит проблема в js .. т.е. у вас submit не остановился.
1) попробуйте убрать e.preventDefault(); и в конце? после аякса прописать

return false; // вырубaeм стaндaртную oтпрaвку фoрмы

#21 Re: Laravel 5.x » Исключить поля в запросе » 12.02.2016 17:13:33

Если они не нужны, то чтобы не городить в каждом запросе селекты, то можно скрыть в классе модели свойство hidden или отобразить - visible
как пример: https://laravel.ru/docs/v5/eloquent#преобразование-8

#22 Re: Laravel 5.x » laravel jquery php отправление данные и возвращение ответа » 12.02.2016 16:57:12

dataType: 'json' - и возвращайте ему json тоже
контролер

public function add_comment(Request $request, $id)
{
	$out = ['error' => 'Что-то пошло не так :('];
	if($request->has('comment') && Auth::user())
	{
	    $comment_model = new Comments();
	    $comment_model->comment = $request->input('comment');
	    $comment_model->item_id = $id;
	    $comment_model->user_id = Auth::user()->id;
	    $comment_model->save();
	    $out['success'] = 'Комментарий был отправлен на модерирование!';
	} 
	else {
		$out['error'] = 'У вас нет доступа или комментарий пустой';
	}

	return Response::json($out);

}

ну и js что-то типа

$('body').on('submit', '#form_id', function(e) {
	e.preventDefault();
	$.ajax({
            type: "POST",
            url: "/ip/general/get-country",
            cache: false,
            dataType: "json",
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            },
            beforeSend: function(){
            	$('#heretext').removeClass(error);
                // выводим инфу, что идёт обработка
            },
            success: function(data){
                if (data.success) {
                    $('#heretext').html(data.success).fadeOut(2000);
                } else {
                    $('#heretext').addClass('error').html(data.error).fadeOut(2000);
                }
            },
            error: function() {
                // выводим инфу о ошибки
            }
        });
}

#24 Re: Laravel 5.x » Помощь в связях » 02.11.2015 02:02:13

не видно связей у вас, но если

Article::find($id)->tags()

работает, значит связь есть. Должно выводить

foreach (Article::all() as $item)
{
    echo $item->tags->name; // вывод конкретного поля, к примеру name, или объект $item->tags()
}

Если бы небыло связей, то через джойны.

#25 Re: Laravel 4 » Laravel-Excel » 02.11.2015 01:48:46

Arat пишет:

}%Народ, с кодировкой есть решение?

Использовал dompdf в проектах, там тоже была проблема с кодировкой, пока не залил шрифты с поддержкой кириллицы

Подвал раздела