Laravel по-русски

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

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

#51 Re: Laravel 5.x » Проблемы с Laravel 5.4 + ajax » 03.03.2017 12:23:43

В теме есть и код контроллера и рута ))
dataType я так понимаю Json !?

#52 Laravel 5.x » Проблемы с Laravel 5.4 + ajax » 03.03.2017 11:48:16

MeKree
Ответов: 12

Не понемаю почему не получается передать запрос в контроллер средствами 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!?

#53 Re: Laravel 5.x » Реализация должностей » 03.03.2017 01:58:36

Самый простой для тебя вариант будет конструкция вроде этой

if (Auth::check()) {
  if (Auth::user()->level > 0) {
     return "Показываем содержание";
  } else { return redirect('/home'); }
}

Но это можно использовать только в мелких и локальных проектах.

#55 Re: Laravel 5.x » Проблема с Session::get(); » 02.03.2017 22:25:40

Всем спасибо, решил так

public function __construct()
{
   $this->middleware(function ($request, $next) 
   {
        $this->lang = session()->has( 'locale' ) ? session()->get( 'locale' ) : [];
        App::setLocale($this->lang);
       return $next($request);
    });
}

#56 Laravel 5.x » Проблема с Session::get(); » 02.03.2017 13:18:44

MeKree
Ответов: 3

Пытаюсь реализовать мултиязычность на сайте.

Локаль которую нужно показать получаю так

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'). Спасибо заранее

#57 Re: Laravel 5.x » Присвоение значения из JavaScript в @foreach » 27.02.2017 10:51:44

Да я ошибся. Надо было App/Article::all();

А вариант с diffForHumans мне не подойдёт по тому что у меня есть и другие переменные которые просчитывается в javascript и выводятся пользователю. Принцип такой что дается 24 часа таймера , начальная и конечная цена. Пока часы тикают цена растет до финальной. То что я изобразил выше это мягко сказать , далеко от того где я буду это использовать.
По сути вопрос в том как любую нужную переменную вывести в @foreach.

#58 Laravel 5.x » Присвоение значения из JavaScript в @foreach » 27.02.2017 03:51:48

MeKree
Ответов: 4

Доброго времени суток. Помогите пожалуйста разобраться с данной проблемой.

Значит есть :примерный код без деталей:

$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 !?

Буду благодарен любым наводкам. Спасибо!

#59 Re: Laravel 5.x » Проблемы с Ulogin » 07.02.2017 12:12:02

Спасибо, проблема решена! Можете закрывать!

#60 Laravel 5.x » Проблемы с Ulogin » 07.02.2017 10:59:09

MeKree
Ответов: 1

Здравствуйте, новичок я еще в работе с этим богатым фреймворком и столкнулся с такой проблемой!

Попытался реализовать регистрацию/вход пользователя на сайт как описано в этой статье -> Не реклама. Все заработало только вот есть неприятный баг , происхождение которого я не очень понимаю, и либо я не умею пользоваться поисковиками либо там такой траблы не нашлось. Значит если провести 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');

Скажите пожалуйста где я напортачил ? Заранее спасибо!

#61 Re: Laravel 5.x » Добавить данные в бд » 31.01.2017 15:37:38

TrueKanonir пишет:

Тогда так

$article = Article::where('category_id, $category->id)->update(['public' => $category->public]);

Спасибо, заработало!!!

#62 Re: Laravel 5.x » Добавить данные в бд » 31.01.2017 14:52:33

$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

#64 Laravel 5.x » Добавить данные в бд » 31.01.2017 12:12:11

MeKree
Ответов: 5

Есть функция

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".

Скажите пожалуйста как это коректно реализовать. Заранее спасибо!

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