Ответы пользователя по тегу Laravel
  • Проблема с путями загрузки файлов?

    ubukulov
    @ubukulov
    Веб-разработчик
    Попробуйте так:
    $path = base_path() . "/storage/posts/";
    Ответ написан
    Комментировать
  • Как выполнить запрос в Laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    Во первых у вас в запросе ошибка. Она должно быть как-то так.
    SELECT * FROM `cards` 
    INNER JOIN `mechanics_field` ON `mechanics_field`.card_id=`cards`.id
    WHERE `mechanics_field`.`mechanics_id` = 1 and `cards`.`cost` = 3


    А этот же запрос в конструкторе Laravel:

    $result = DB::table('cards')
    	->join('mechanics_field', 'mechanics_field.mechanics_id', '=', 'cards.mechanic_id')
    	->where(['mechanics_field.mechanics_id' => 1, 'cards.cost' => 3])
    	->get();


    А если имеется модель Card, то можно так написать:
    $result = Card::where(['mechanics_field.mechanics_id' => 1, 'cards.cost' => 3])
    			->select('cards.*')
    			->join('mechanics_field', 'mechanics_field.mechanics_id', '=', 'cards.mechanic_id')
    			->get();
    Ответ написан
    Комментировать
  • Как запустить cron job в Laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    $schedule->command('stocks:cron')->cron("*/15 * * * *"); каждый 15 минут

    По расписание можно посмотреть тут

    https://en.wikipedia.org/wiki/Cron
    Ответ написан
  • Larvel как сделать редирект и передать данные?

    ubukulov
    @ubukulov
    Веб-разработчик
    Попробуйте использовать resource

    Route::resource('category', 'CategoryController');
    Ответ написан
    Комментировать
  • Как правильно валидировать данные в Laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    Попробуйте использовать GetHint Request . То есть так:

    use App\Http\Requests\GetHint as GetHintRequest;
    ......
    public function show(GetHintRequest $request)
        {
            $hint = Hint::where('id', $request->hintId)->first();
    
            return new HintResource($hint);
        }
    Ответ написан
    2 комментария
  • В чем может быть проблема с сессией laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    Попробуй во всех формах поставить следующие. Этот код создает токен.

    {{ csrf_field() }}
    Ответ написан
  • Как сделать отдельную форму входа средствами laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    Лучше сделать 2 контроллера. Один для админку и второй для пользователей.

    Вот код:

    <?php
    namespace App\Http\Controllers\Admin;
    use App\Admin;
    use Validator;
    use Illuminate\Support\Facades\Auth;
    use App\Http\Controllers\Controller;
    use Illuminate\Foundation\Auth\ThrottlesLogins;
    use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
    use Illuminate\Http\Request;
    class AuthController extends Controller
    {
        /*
        |--------------------------------------------------------------------------
        | Registration & Login Controller
        |--------------------------------------------------------------------------
        |
        | This controller handles the registration of new users, as well as the
        | authentication of existing users. By default, this controller uses
        | a simple trait to add these behaviors. Why don't you explore it?
        |
        */
        use AuthenticatesAndRegistersUsers, ThrottlesLogins;
        /**
         * Where to redirect users after login / registration.
         *
         * @var string
         */
        protected $redirectTo = '/admin/dashboard';
        /**
         * Create a new authentication controller instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->middleware('guest', ['except' => 'logout']);
        }
        /**
         * Get a validator for an incoming registration request.
         *
         * @param  array  $data
         * @return \Illuminate\Contracts\Validation\Validator
         */
        protected function validator(array $data)
        {
            return Validator::make($data, [
                'username' => 'required|max:255',
                'email' => 'required|email|max:255|unique:users',
                'password' => 'required|min:6|confirmed',
            ]);
        }
        /**
         * Create a new user instance after a valid registration.
         *
         * @param  array  $data
         * @return User
         */
        protected function create(array $data)
        {
            return Admin::create([
                //'name' => $data['name'],
                //'email' => $data['email'],
                'password' => bcrypt($data['password']),
            ]);
        }
        public function showLogin(){
            return view('admin/login');
        }
        public function authenticate(Request $request){
            if (Auth::guard('admin')->attempt(['username' => $request->get('username'), 'password' => $request->get('password')])) {
                return redirect()->intended('admin/dashboard');
            }else{
                return redirect()->back()->with('message', 'Логин или пароль не правильный');
            }
        }
        protected function guard(){
            return Auth::guard('admin');
        }
        protected function username(){
            return 'username';
        }
        public function logout(){
            Auth::guard('admin')->logout();
            return redirect()->route('home');
        }
    }
    
    Вот контроллер для пользователей:
    
    <?php
    namespace App\Http\Controllers\Usr;
    use App\User;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Support\Facades\Hash;
    use Validator;
    use Illuminate\Support\Facades\Auth;
    use App\Http\Controllers\Controller;
    use Illuminate\Foundation\Auth\ThrottlesLogins;
    use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
    use Illuminate\Http\Request;
    use Cookie;
    use App\Card;
    class AuthController extends Controller
    {
        /*
        |--------------------------------------------------------------------------
        | Registration & Login Controller
        |--------------------------------------------------------------------------
        |
        | This controller handles the registration of new users, as well as the
        | authentication of existing users. By default, this controller uses
        | a simple trait to add these behaviors. Why don't you explore it?
        |
        */
        use AuthenticatesAndRegistersUsers, ThrottlesLogins;
        /**
         * Where to redirect users after login / registration.
         *
         * @var string
         */
        protected $redirectTo = '/user/account';
        /**
         * Create a new authentication controller instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
        }
        /**
         * Get a validator for an incoming registration request.
         *
         * @param  array  $data
         * @return \Illuminate\Contracts\Validation\Validator
         */
        protected function validator(array $data)
        {
            return Validator::make($data, [
                'username' => 'required|max:255',
                'email' => 'required|email|max:255|unique:users',
                'password' => 'required|min:6|confirmed',
            ]);
        }
        /**
         * Create a new user instance after a valid registration.
         *
         * @param  array  $data
         * @return User
         */
        protected function create(array $data)
        {
            return User::create([
                //'name' => $data['name'],
                //'email' => $data['email'],
                'password' => bcrypt($data['password']),
            ]);
        }
        public function showLogin(){
            return view('user/login');
        }
        public function authenticate(Request $request){
            if (Auth::attempt(['mphone' => $request->get('username'), 'password' => $request->get('password')])) {
                $this->checkPartnerAuth();
    //            if(Cookie::has('store')){
    ////                return redirect(Cookie::get('cert'));
    //                return redirect('/cart');
    //            }
                if(isset($_SESSION['REQUEST_URI'])){
                    return redirect('/store'.$_SESSION['REQUEST_URI']);
                }
                return redirect()->intended('user/account');
            }else{
                return redirect()->back()->with('message', 'Логин или пароль не правильный');
            }
        }
        protected function username(){
            return 'mphone';
        }
        # проверка
        public function checkPartnerAuth(){
            if(Auth::guard('partner')->check()){
                Auth::guard('partner')->logout();
            }
        }
        # форма сброса пароля пользователя
        public function showResetForm(){
            return view('user/password-reset');
        }
        # сброс пароля
        public function reset(Request $request){
            $phone = $request->get('username');
            $password = generateCode(4);
            $hash_password = Hash::make($password);
            sendSms($phone,"Vash noviy parol: $password");
            $result = DB::update("UPDATE users SET password='$hash_password' WHERE mphone='$phone'");
            if($result){
                return redirect()->back()->with('message', 'Пароль успешно сброшен. Новый пароль отправлено на ваш номер.');
            }
        }
        # форма регистрации нового пользователя
        public function showRegisterForm(){
            return view('user/user-register');
        }
        
        # регистрация нового пользователя
        public function register(Request $request){
            $password = generateCode(4);
            $hash_password = Hash::make($password);
            $phone = $request->get('username');
            $balance = __encode('0', env('KEY'));
            $data = [
                'firstname' => $request->get('firstname'), 'lastname' => $request->get('lastname'),
                'email' => $request->get('email'), 'mphone' => $phone, 'fm' => $balance,
                'referral' => $request->get('id_referral'), 'password' => $hash_password
            ];
            if(User::check_user_by_phone($phone)){
                $lastInsertId = User::create($data)->id;
                if($lastInsertId){
                    Auth::loginUsingId($lastInsertId, true);
                    Card::setCard($lastInsertId);
                    sendSms($phone, "Vashy dannye: Login: $phone, parol: $password");
                    return redirect('user/account');
                }
            }else{
                return redirect()->back()->with('message', 'Пользователь с таким номер уже зарегистрирован');
            }
        }
    }
    
    Ниже посредники.
    
    Посредник для админку.
    <?php
    namespace App\Http\Middleware;
    use Closure;
    use Illuminate\Support\Facades\Auth;
    class RedirectIfNotAdmin
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            if (Auth::guard('admin')->check()) {
                return redirect('/admin/dashboard');
            }
            return $next($request);
        }
    }
    
    Посредник для пользователей:
    <?php
    namespace App\Http\Middleware;
    use Closure;
    use Illuminate\Support\Facades\Auth;
    class RedirectIfAuthenticated
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @param  string|null  $guard
         * @return mixed
         */
        public function handle($request, Closure $next, $guard = null)
        {
            if (Auth::guard($guard)->check()) {
                return redirect('/');
            }
            return $next($request);
        }
    }


    Примерно так
    Ответ написан
  • Почему не отправляется форма?

    ubukulov
    @ubukulov
    Веб-разработчик
    1) у вас в форме должно отправиться _token

    <form action="javascript:void(null)" id="form" onsubmit="followPrice(this)" enctype="multipart/form-data" method="post">
                                    {{ csrf_field() }}
                            	<input type="text" class="form-control" name="title" placeholder="Название"><br>
                            	<textarea class="form-control" rows="7" name="message" placeholder="Текст"></textarea><br>
                            	<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
                            	<!-- <label for="inputFile">Картинка: </label>
                            	<input type="file" id="inputFile" ng-model="newData.image"><br> -->
                            	<input type="submit" class="btn btn-primary" value="Добавить">
                            </form>
    
    потом в JS получаешь форму так:
    
    <code lang="javascript">
    function followPrice(form) {
    
        var data = $(form).serialize();
    
        $(form).find(".errors").html("");
    
        $.ajax({
            method: "POST",
            url: "/api/ajax/follow-price",
            data: data,
    </code>
    Ответ написан
    Комментировать
  • Как в Laravel прописать роут для всех страниц кроме главной?

    ubukulov
    @ubukulov
    Веб-разработчик
    Route::get('/', function () {
        return view('main');
    });
    
    // для всех остальных страницы через группы пишешь 
    Route::group();
    Ответ написан
    Комментировать
  • Как правильно составить запрос к БД Laravel 5.6.?

    ubukulov
    @ubukulov
    Веб-разработчик
    Таблица Новости примерно так. news(id, title, ...)
    Таблица Категории categories(id, title)
    Таблица category_news(id, category_id, news_id)
    
    В модели Category пишешь метод news
    
    public function news(){
          $news_ids =  $this->hasMany("\App\CategoryNews", "category_id", "id"); // тут получаешь ид всех новостей с таблицы category_news
          $ids = "";
          foreach($news_ids as $item){
                $ids .= $item->news_id . ",";
          }
          $ids = rtrim($ids, ",");
          $news = DB::select("SELECT * FROM news WHERE id IN($ids)");
          return $news;
          
    }
    
    как-то так. Попробуйте!
    Ответ написан
  • Почему не работает ссылка storage laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    попробуй ссылка указать так. base_path()
    Ответ написан
    Комментировать
  • Как зарузить фотографии в базу даных в Laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    public function store(Request $request) {
           $this->validate($request, [
                 'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
            ]);
    
      $article = new Carouseleinfos();
      if ($request->hasFile('images')) {
          $dir = public_path('/images/carousele');
          $extension = strtolower($request->file('images')->getClientOriginalExtension()); // get image extension
          $fileName = str_random() . '.' . $extension; // rename image
          $path_image = $dir . $fileName;
          $request->file('images')->move($dir, $fileName);
          $image->images = $fileName;
    
      }
        $article->text1 = $request->get('text1');
        $article->text2 = $request->get('text2');
        $article->images = str_slug($request->get('images')); // возможно тут сохранить путь к файлу  $path_image
        $article->textbutton = $request->get('textbutton');
        $article->linkbutton = $request->get('linkbutton');
    
        $article->save();
        return view('crud_4/index');
    }
    
    }
    Ответ написан
    Комментировать
  • Как здесь впихнуть ещё один middleware?

    ubukulov
    @ubukulov
    Веб-разработчик
    Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function(){
         // тут все маршруты для админку
    });
    Ответ написан
    Комментировать
  • Как написать данный запрос в Laravel?

    ubukulov
    @ubukulov
    Веб-разработчик
    DB::update("UPDATE `logs` SET `status`= 1 WHERE `status` = 0 LIMIT 1")
    Ответ написан
    Комментировать
  • Как исправить ошибку аутентификации?

    ubukulov
    @ubukulov
    Веб-разработчик
    Вы пытаетесь авторизоваться через ИД.

    Соответственно для него есть метод:

    Auth::loginUsingId(1);

    Authenticate A User By ID

    To log a user into the application by their ID, you may use the loginUsingId method. This method accepts the primary key of the user you wish to authenticate:

    Auth::loginUsingId(1);

    // Login and "remember" the given user...
    Auth::loginUsingId(1, true);

    https://laravel.com/docs/5.6/authentication
    Ответ написан
    1 комментарий
  • Как кешировать данные из БД каждые 15 минут?

    ubukulov
    @ubukulov
    Веб-разработчик
    В документации все написано.

    Например.

    $result = DB::select("SELECT * FROM goods"); // пример запроса
    
    if(!Cache::has('goods')){
           // если в кэше нет то сохраняем в кэш
          Cache::put('goods', $result, 15); // на 15 минут сохраняем в кэш
          $goods = Cache::get('goods'); // получаем из кэша
    }else{
           // получаем из кэша
          $goods = Cache::get('goods'); // получаем из кэша
    }
    Ответ написан
    Комментировать
  • Почему Storage::delete() не работает?

    ubukulov
    @ubukulov
    Веб-разработчик
    Попробуй вот так.

    <?php
    Storage::delete(base_path() . "images/posts/" . $post->image);
    ?>
    Ответ написан
    1 комментарий