Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
/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);
}
отменить нельзя, можно только клонировать предварительно выбранные данные без селекта.
всё зависит от более конкретного примера, навскидку как пример:
$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();
мой хостинг не даёт такую возможность, класть что-либо выше публичной папки
Странный хостинг и я бы не рискнул на таком хостинге разворачивать сайт. SSH тоже нет? Composer?
Поменяйте, так как если такие ограничения на хосте, то проблемы будут и не удобства.
а зачем вы устанавливали Laravel в публичную директорию? Безопасность для Вас не важная? Установите нормально, и не нужно "чудить" будет.
если глобально, то
$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'
]);
и ссылаться уже на этот роутер
Получаем список к примеру в контролере, групирируя по столбцу/цам, всё зависит от конкретной задачи, как пример:
$select = DB::table('table')->groupBy('unique')->lists('name', 'id');
передаём значение $select во вьюху
ну и во вьюхе выводим, как пример:
{{ Form::select('formsel', $select) }}
Я немного по другому поступаю, изначально в контролере который буду наследовать всё объявляю, типа того
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);
// ....
}
}
удобно, что можно несколько уровней добавлять, к примеру каталог с вложениями, плюс доступны в любом шаблоне
Ковычки уберите
@for($i = 0; $i < count($dats); $i++)
{{ $dats[$i] }}
@endfor
Это да, но если у вас удобства и скорость разработки, а тут выяснилось, что нужен отклик, то что тогда?
Оптимизировать, кэшировать, к примеру - конфиг
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 он будет такой, как вы привели изначально).
Последний вариант - выбрать другую платформу (предварительно проанализировав целесообразность, затратность и.т.д)
Это лично моё мнение.
Мне если нужен отклик и проект массивный, то я использую фреймворк Phalcon, если удобства и скорость разработки, то Laravel.
Как говорят - под каждую задачу, свой инструмент.
где-то 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
Посмотрите в настройках куки, какой адаптер выбран, и если файловая система, то права на папку проверьте.
странно, чудес не бывает
Стукните в скайп: artdevue , так как где-то мелочь, а мы будем гадать или не обращать внимание на неё.
Или откройте доступ на время к shop com
а вообще, я логики немного не пойму, раз у вас нет в форме урла, для отправки, значит без аякса вы не отправите форму (разве что на ту-же страницу). Т.е. если вы не планируете отправлять форму без аякса (хотя можно предусмотреть), тогда уберите submit с формы, а поставьте type="button", и отлавливайте по нему. Плюс, я не вижу, что вы передаёте поле comment через аякс, т.е нужно передать ещё
data: $("#form_id").serialize(),
ответ то пришёл, значит проблема в js .. т.е. у вас submit не остановился.
1) попробуйте убрать e.preventDefault(); и в конце? после аякса прописать
return false; // вырубaeм стaндaртную oтпрaвку фoрмы
попробуйте это решение
https://laracasts.com/discuss/channels/ … ist?page=1
Если они не нужны, то чтобы не городить в каждом запросе селекты, то можно скрыть в классе модели свойство hidden или отобразить - visible
как пример: https://laravel.ru/docs/v5/eloquent#преобразование-8
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() {
// выводим инфу о ошибки
}
});
}
не видно связей у вас, но если
Article::find($id)->tags()
работает, значит связь есть. Должно выводить
foreach (Article::all() as $item)
{
echo $item->tags->name; // вывод конкретного поля, к примеру name, или объект $item->tags()
}
Если бы небыло связей, то через джойны.