Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
В теме есть и код контроллера и рута ))
dataType я так понимаю Json !?
Не понемаю почему не получается передать запрос в контроллер средствами AJAX
Цель нудно изменить значение $article->public на 0 (по дефолту 1)
Делаю так
HTML:
<meta name="csrf-token" content="{!! csrf_token() !!}" />
<span id="timer" class="uk-badge">somedata</span><button type="button" title="Изменить" class="change">Изменить</button>
<input type="hidden" id="item_id" value="{{$item->id}}"/>
JS:
$('.change').click(function(){
span=$(this).parent();
item_id=$("#item_id").val();
$.ajax({
url: '/change',
method: 'PUT',
data: {'id': item_id, 'public' : '0'},
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
success: function(res)
{
alert('ok');
},
error: function(msg){
console.log(msg);
}
});
})
</script>
Route:
Route::put('change','HomeController@archivearticle');
Controller:
public function archivearticle(Request $request)
{
$data = $request->all();
dd($data);
}
В итоге консоль говорит это
PUT http://localhost:8000/ 405 (Method Not Allowed)
Как это дело отладить. Или может есть другой вариант отправки PUT через AJAX!?
Самый простой для тебя вариант будет конструкция вроде этой
if (Auth::check()) {
if (Auth::user()->level > 0) {
return "Показываем содержание";
} else { return redirect('/home'); }
}
Но это можно использовать только в мелких и локальных проектах.
Вот как вариант ULogin под laravel без заморочек НЕ РЕКЛАМА
Всем спасибо, решил так
public function __construct()
{
$this->middleware(function ($request, $next)
{
$this->lang = session()->has( 'locale' ) ? session()->get( 'locale' ) : [];
App::setLocale($this->lang);
return $next($request);
});
}
Пытаюсь реализовать мултиязычность на сайте.
Локаль которую нужно показать получаю так
Route::get('setlocale/{locale}', 'HomeController@language');
public function language($locale){
if (in_array($locale, \Config::get('app.locales'))) { // Проверяем, если у пользователя выбран доступный язык
Session::put('locale', $locale); // Устанавливаем его в сессии под именем locale
}
return Redirect::back();
}
Если в blade вставить
{{\Session::get('locale')}}
, то получаю нужное значение (скажем ru)
А если в __construct вставить такой код
if (Session::get('locale') != null) {
$lang = Session::get('locale');
} else if (Session::get('locale') == null) {
$lang = "null";
}
View::share('lang', $lang);
, то получаю null. Ломаю голову, не могу понять почему !?
Естественно в контроллере подключены
use View;
use Session;
Помогите пожалуйста понять почему __construct не выдает значение Session::get('locale'). Спасибо заранее
Да я ошибся. Надо было App/Article::all();
А вариант с diffForHumans мне не подойдёт по тому что у меня есть и другие переменные которые просчитывается в javascript и выводятся пользователю. Принцип такой что дается 24 часа таймера , начальная и конечная цена. Пока часы тикают цена растет до финальной. То что я изобразил выше это мягко сказать , далеко от того где я буду это использовать.
По сути вопрос в том как любую нужную переменную вывести в @foreach.
Доброго времени суток. Помогите пожалуйста разобраться с данной проблемой.
Значит есть :примерный код без деталей:
$articles = App\Article::find($id);
@foreach($articles as $article)
<ul>
<li>{{$article->title}}</li>
<li>{{...}}</li>
<li id="time"></li>
</ul>
@endforeach
И есть код на JS который считает сколько времени прошло с момента публикации :примерный, неполный код:
<script>
var created = "{{ date('M d Y H:i:s', strtotime($article->created_at)) }}";
var time = setInterval(function()
{
var passed = new Date().getTime() - new Date(created).getTime();
document.getElementById("time").innerHTML = passed;
}, 1000);
</script>
Вопрос в том как передать переменную passed для каждого экземпляра $article !?
Буду благодарен любым наводкам. Спасибо!
Спасибо, проблема решена! Можете закрывать!
Здравствуйте, новичок я еще в работе с этим богатым фреймворком и столкнулся с такой проблемой!
Попытался реализовать регистрацию/вход пользователя на сайт как описано в этой статье -> Не реклама. Все заработало только вот есть неприятный баг , происхождение которого я не очень понимаю, и либо я не умею пользоваться поисковиками либо там такой траблы не нашлось. Значит если провести Logout() то после этого никак не удается произвести вход. Вроде данные получает но не логиниться.
Проверку входа провожу так в самом blade.
@if(\Auth::check())
<a href="{{ action('UloginController@logout') }}"> Выход </a>
@else
кнопки соц. сетей
@endif
Логаут провожу так
public function logout()
{
Auth::logout();
Session::flush();
return Redirect::route('home');
}
Ну и роут конечно же
Route::get('/logout', 'UloginController@logout');
Скажите пожалуйста где я напортачил ? Заранее спасибо!
Тогда так
$article = Article::where('category_id, $category->id)->update(['public' => $category->public]);
Спасибо, заработало!!!
$article = Article::where('category_id, $category->id)->find(1);
Либо так
$article = Article::where('category_id, $category->id)->first();
Работает по сути, но в данном случае проблема что данная функция передает только в первый 'article', а нужно что бы во все Article::where('category_id', $category->id) изменялюсь значение на то что в $category->id
Спасибо, попробую и отпишусь
Есть функция
public function update(Request $request,$id)
{
$category=Category::find($id);
$category->update($request->all());
$category->save();
return redirect()->route('categories')->with('message','Category '.$category->title. ' updated');
}
Нужно из $category найти атрибут "public" и если $article = App\Article::where('category_id', $category->id); что бы во все посты где $article->category_id = $category->id, сменили значение $article->public на $category->public;
Реализовал я это так
public function update(Request $request,$id)
{
$category=Category::find($id);
$category->update($request->all());
$category->save();
$article = Article::where('category_id, $category->id);
$article->public = $category->public;
$article->save();
return redirect()->route('categories')->with('message','Category '.$category->title. ' updated');
}
В итоге получаю Error сообщение с текстом "Method save does not exist".
Скажите пожалуйста как это коректно реализовать. Заранее спасибо!