Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Использую Laravel 5.4. Создал ресурс Orders.
В routes/api.php добавил :
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function () {
Route::resource('orders', 'OrdersController');
});
в заголовок запроса добавил token существующего пользователя
Authorization:Bearer 6DyLjKAJzXYRrxMOFm1QO1aupt5LLX627adyJcAd
Когда делаю GET-запрос, все отлично вызывается нужный метод. Но когда делаю POST, например на создание новой записи, то получаю такую ошибку:
Whoops, looks like something went wrong.
1/1
HttpException in Handler.php line 133:
This action is unauthorized.
in Handler.php line 133
at Handler->prepareException(object(AuthorizationException)) in Handler.php line 109
at Handler->render(object(Request), object(AuthorizationException)) in Handler.php line 47
at Handler->render(object(Request), object(AuthorizationException)) in Pipeline.php line 82
at Pipeline->handleException(object(Request), object(AuthorizationException)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 43
at Authenticate->handle(object(Request), object(Closure), 'api') in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ThrottleRequests.php line 49
at ThrottleRequests->handle(object(Request), object(Closure), '60', '1') in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Router.php line 561
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 520
at Router->dispatchToRoute(object(Request)) in Router.php line 498
at Router->dispatch(object(Request)) in Kernel.php line 174
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 53
Как разрешить выполнение POST запросов?
ага, наверняка try_files кривой стоял
нет, $query_string не передавал
ешки матрешки... nginx криво был настроен... Всем спасибо за помощь
Пробую получить $request->get('page') возвращает null, что-то я не понимаю.
Был такой момент что когда установил админку laravelrus/sleepingowl , то на продакшене пагинация тоже не работает, а на локальном работает. Поэтому решил переписать админку с нуля, но тут столкнулся с тем что теперь вообще нигде не работает...
Может проблема в кривых настройках самого Laravel???
Paginator::resolveCurrentPage()
тоже всегда возвращает первую страницу. Получается что проблема в самом Paginator
странно получается, когда пытаюсь получить текущую страниц:
$currentPage = $companies->currentPage();
то всегда возвращает первую
ПОКАжИ ПОЛНОСТЬю МОДЕЛЬ КОМПАНИЙ
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use SleepingOwl\Admin\Traits\OrderableModel;
class Company extends Model
{
use SoftDeletes;
use OrderableModel;
protected $table = 'companies';
public function city()
{
return $this->belongsTo(City::class);
}
public function cuisine()
{
return $this->belongsTo(Cuisine::class);
}
public function products()
{
return $this->hasMany(Product::class, 'company_id');
}
public function transactions()
{
return $this->hasMany(Transaction::class, 'company_id');
}
public function companyReviews()
{
return $this->hasMany(CompanyReview::class, 'company_id');
}
public function productscsv()
{
return $this->hasMany(ProductCsv::class, 'company_id', 'id');
}
public function scopeCity($query, $cityID)
{
return $query->where('city_id', $cityID);
}
public function scopePublished($query)
{
return $query->where('status', 1);
}
public function getOrderField()
{
return 'order';
}
public function setPaymentTypeAttribute($value)
{
$this->attributes['payment_type'] = empty($value) ? '' : implode(',', $value);
}
public function getPaymentTypeAttribute($value)
{
return explode(',', $value);
}
public function getLink()
{
return 'ресторан/' . $this->url;
}
public function getCategories()
{
$categoriesID = $this->products()->pluck('category_id')->unique()->toArray();
return Category::whereIn('id', $categoriesID)->get();
}
public function getCuisines()
{
$cuisinesID = $this->products()->pluck('cuisine_id')->unique()->toArray();
return Cuisine::whereIn('id', $cuisinesID)->get();
}
public static function boot()
{
static::creating(function($instance)
{
$pattern = '#[^-а-яА-Яa-zA-Z0-9_ ]/u#';
$name = preg_replace($pattern, ' ', $instance->name);
$name = mb_strtolower(trim($name));
$pattern = '#[-_ ]+#';
$name = preg_replace($pattern, '-', $name);
$instance->url = $name;
});
parent::boot();
}
}
ссылки вида link?page=1 , link?page=2 работают?
Да, по ним переходишь нормально, но контент всегда выводится c ?page=1
А не пробовали повторить в точности, как в документации, и без разметки? Работает?
у меня и сделано как в документации
$companies = Company::paginate(20);
Но разметку не убирал, не вижу смысла, как разметка может повлиять?
Так на первой странице пять компаний, так? А в пагинаторе сколько страниц? Сами ссылки в пагинаторе присутствуют, только не работают, или их вообще нет?
Всего в БД около 100 компаний, в пагинации настроена 20 и на странице выводится 20 (5 - это я опечатался), в пагинации есть ссылки на все 5 страниц, при переходе по пагинации в в url добавляется ?page=4 , но страница всегда остается открытая первая
Вы не знаете SQL и не знаете Eloquent/
Так нельзя::select('*')
Либо делайте
::where(1,'='1)
либо ничего не указывайте.
Это во первых.
эта конструкция работает, возвращает все поля и так принято в SQL (SELECT * FROM ...)
Я поменял на $companies = Company::paginate(5); но все равно возвращает только первую страницу на пагинацию не обращает внимания
Здравствуйте.
Получаю данные из модели:
$companies = Company::select('*')->paginate(20);
Вывожу их во view:
<table class="table table-hover">
<thead>
<tr>
<th>№</th>
<th>Название</th>
<th>Город</th>
<th>Email</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($companies as $company)
<?php //dd($company);?>
<tr>
<td>{{ $company->id }}</td>
<td>{{ $company->name }}</td>
<td><a href=""><i class="fa fa-filter" )></i></a> {{ $company->city->name }}</td>
<td>{{ $company->email }}</td>
<td>
<a href="#" class="btn btn-default" title="Редактировать"><i class="fa fa-edit"></i></a>
<a href="#" class="btn btn-danger" title="Удалить"><i class="fa fa-trash"></i></a>
</td>
</tr>
@endforeach
</tbody>
</table>
{{ $companies->render() }}
Но при переходи по страницам всегда открыта первая страница. В чем может быть проблема?
в одном шаблоне вызываю свой виджет и передаю переменную таким вот образом:
{!! View::make('widgets.reviews', ['var' => 'new']) !!}
а вот сам код виджета:
namespace App\Widgets;
use Illuminate\Contracts\View\View;
class Reviews
{
public function compose(View $view)
{
$view->with([
'title' => 'Last reviews',
'reviews' => [],
]);
}
}
как мне в нем получить передаваемую переменную var ?
мне нужно передать в compose, чтобы обработать переменную и вернуть вывести новую подборку.
лучше через middleware определять сразу папку с вьюхами.
Можно пример? А то я с этим фреймворком только начал разбираться...
В зависимости от страны пользователя хочу формировать разные шаблоны, сейчас получился вот такой небольшой код:
$local = App::getLocale();
$templateSuffix = $local == 'en' ? '' : '_' . $local;
return view('country_main' . $templateSuffix, []);
Но это абсолютно криво, так как этот код нужно будет дублировать в каждый метод который выводит данные. Куда можно вынести этот код, либо может есть стандартное решение такой проблемы, чтобы решить эту проблему дублирования кода?
В зависимости от страны пользователя хочу формировать разные шаблоны, сейчас получился вот такой небольшой код:
$local = App::getLocale();
$templateSuffix = $local == 'en' ? '' : '_' . $local;
return view('country_main' . $templateSuffix, []);
Но это абсолютно криво, так как этот код нужно будет дублировать в каждый метод который выводит данные. Куда можно вынести этот код, либо может есть стандартное решение такой проблемы, чтобы решить эту проблему дублирования кода?
Страницы 1