Метод App\Http\Controllers\SkillController::show не существует. - Ларавель 5.7

Я продолжаю получать эту ошибку, когда пытаюсь создать навык в своем проекте.

Method App\Http\Controllers\SkillController::show does not exist.

Метод App\Http\Controllers\SkillController::show не существует. - Ларавель 5.7

Мне не нужен метод show(), потому что мне не нужно представление show для моего объекта навыка.

Это мой маршрутный блок выглядит так

//Skill
Route::get('skill','SkillController@index');
Route::get('skill/create','SkillController@create');
Route::post('skill/store','SkillController@store');
Route::get('skill/{id}/edit', 'SkillController@edit');
Route::post('skill/{id}/update','SkillController@update');
Route::delete('skill/{id}/destroy','SkillController@destroy');

Это весь мой Контроллер навыков

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Skill;
use Input, View, File, Image, SSH, Redirect,Response;

class SkillController extends Controller {

    public function index(){

        $skills = Skill::orderBy('updated_at', 'desc')->orderBy('created_at', 'asc')->where('img_path','==',NULL)->get();

        $first_color  = $skills[0]->color_code;
        $second_color = $skills[1]->color_code;
        $third_color  = $skills[2]->color_code;
        $fourth_color = $skills[3]->color_code;
        $fift_color   = $skills[4]->color_code;

        return View::make('layouts.be.skills.index', get_defined_vars());
    }

    public function all(){
        return Skill::all()->pluck('name');
    }

    public function create(){

        $skillTypes = ['Build System','Development Environment','Server Management','Operating System','IDE','Creative Suite','Video Editing','Package Management','Git Repository','Web Scaffolding','CSS Precompiler','Scripting','Framework','DBMS','Unit Test','Automation Testing','Cloud Platform','Hosting Provider','Content Management', 'API', 'Authentication' , 'Integration','Language','Web Server','Project Managment','Documentation','Utility','Network Analyzer' ];

        sort($skillTypes);

        return View::make('layouts.be.skills.create', get_defined_vars());
    }

    public function edit($id){

        $skillTypes = ['Build System','Development Environment','Server Management','Operating System','IDE','Creative Suite','Video Editing','Package Management','Git Repository','Web Scaffolding','CSS Precompiler','Scripting','Framework','DBMS','Unit Test','Automation Testing','Cloud Platform','Hosting Provider','Content Management', 'API', 'Authentication' , 'Integration','Language','Web Server','Project Managment','Documentation','Utility','Network Analyzer' ];

        sort($skillTypes);

        $skill = Skill::findOrFail($id);
        return View::make('layouts.be.skills.edit', get_defined_vars());
    }

    public function store(){

        $skill             = new Skill;
        $skill->type       = Input::get('type');
        $skill->name       = Input::get('name');
        $skill->value      = Input::get('value');
        $skill->color_code = Input::get('color_code');
        $skill->save();

        if (Input::hasFile('logo_path')) {
            $image_path      = '/assets/img/skill/';
            $path            = public_path() . $image_path;
            $file            = Input::file('logo_path');
            $img_name        = $skill->id.'.png';
            $uploadSuccess   = $file->move($path, $img_name);
            $file_path       = $path . $img_name;
            $skill->img_path = $image_path . $img_name;
            $crop_file       = Image::make($file_path)->fit(20,20);
            $crop_file->save($path . 'crop-'.$img_name, 65);
        }else {
            $skill->img_path = Input::get('logo_path');
        }

        $skill->save();

        return Redirect::to('/skill') ->with('success','The skill was created succesfully!');

    }

    public function update($id){

        $inputs            = Input::all();
        $skill             = Skill::find($id);
        $skill->name       = Input::get('name');
        $skill->type       = Input::get('type');
        $skill->value      = Input::get('value');
        $skill->color_code = Input::get('color_code');

        $skill->save();

        if (Input::hasFile('logo_path')) {

            $image_path      = '/assets/img/skill/';
            $path            = public_path() . $image_path;
            $file            = Input::file('logo_path');
            $img_name        = $skill->id.'.png';
            $uploadSuccess   = $file->move($path, $img_name);
            $file_path       = $path . $img_name;
            $skill->img_path = $image_path . $img_name;
            $crop_file       = Image::make($file_path)->fit(20,20);
            $crop_file->save($path . 'crop-'.$img_name, 65);
        } else {
            $skill->img_path = Input::get('logo_path');
        }

        $skill->save();

        return Redirect::to('/skill') ->with('success','The skill was updated succesfully!');

    }

    public function destroy($id){

        $skill = Skill::find($id);
        $skill->delete();

        $image_path      = '/assets/img/skill/';
        $path            = public_path() . $image_path;
        File::deleteDirectory($path);

        return Redirect::to('/skill') ->with('success','The skill was deleted succesfully!');

    }

    public function skilldata(Request $request){
        $skill = str_replace("-"," ",$request->skill);
        $data = Skill::where(DB::raw('LOWER(type)'),'=',$skill)->get();
        return response()->json($data, 200);
    }
}

Я также пробовал эти 2 команды уже

┌──[root@bheng]──[/home/forge/bheng]                                                                         
└── php artisan cache:clear                                                                                  
Application cache cleared!                                                                                   

┌──[root@bheng]──[/home/forge/bheng]                                                                         
└── composer dumpauto                                                                                        
Do not run Composer as root/super user! See https://getcomposer.org/root for details                         
Generating autoload files                                                                                    
> Illuminate\Foundation\ComposerScripts::postAutoloadDump                                                    
> @php artisan package:discover                                                                              
Discovered Package: nesbot/carbon                                                                            
Discovered Package: laravel/slack-notification-channel                                                       
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravelcollective/remote
Discovered Package: htmlmin/htmlmin
Discovered Package: intervention/image
Discovered Package: laravelcollective/html
Package manifest generated successfully.
You have new mail in /var/mail/root
┌──[root@bheng]──[/home/forge/bheng] 
└── 

skill.create.blade.php

@extends('layouts.be.master')
@section('content')


<div class = "card-body card-padding">
    <div class = "row">

        {!! Form::open(array('class' => 'form-horizontal', 'role' =>'form', 'url'=>'skill/store','files' => true)) !!}


        <div class = "col-sm-4">




            {{-- Name --}}
            <div class = "form-group">
                <label for = "email" class = "col-sm-2 control-label">Name</label>
                <div class = "col-sm-10">
                    <input type = "text" value = "{{Request::old('name')}}"  value = "" name = "name" class = "form-control" id = "name" placeholder = "Name">
                </div>
            </div>

            {{-- Type --}}
            <div class = "form-group">
                <label for = "email" class = "col-sm-2 control-label">Type</label>
                <div class = "col-sm-10">
                    <select name = "type" class = "form-control">
                      @foreach($skillTypes as $item)
                        <option value = "{{ $item }}">{{ $item }}</option>
                      @endforeach
                    </select>
                </div>
            </div>

            {{-- Value --}}
            <div class = "form-group">
                <label class = "col-sm-2 control-label">Value</label>
                <div class = "col-sm-8">
                    <br>
                    <input type = "range" id = "range-value" value = "93" name = "value">
                </div>
                <div class = "col-sm-2">
                    <h3 id = "text-value"></h3>
                </div>
            </div>


            {{-- Color --}}
            <div class = "form-group">
                <label for = "email" class = "col-sm-2 control-label">Color</label>
                <div class = "col-sm-2">
                    <input type = "color" name = "color_code" class = "form-control" placeholder = "Color" id = "example-color-input">

                </div>
            </div>

            <div class = "form-group">
                <div class = "col-sm-offset-4 col-sm-8">
                    <a class = "btn btn-default" href = "/skill"> Cancel </a>
                    <button type = "submit" class = "btn btn-info">Create</button>
                </div>
            </div>



        </div>
        <div class = "col-sm-8">



            {{-- Icon --}}
            <div class = "form-group">
                <label class = "col-sm-2 control-label" >Icon</label>
                <div class = "col-sm-10">

                    <img name = "logo_path" id = "skill-icon" width = "300px"><br><br>

                    <input type = "file" class = "form-control" name = "logo_path" aria-describedby = "fileHelp">
                </div>


                <label class = "col-sm-2 control-label" >Icon URL </label>
                <div class = "col-sm-10">

                    <input id = "url-logo" name = "logo_path" type = "text" class = "form-control">

                </div>



            </div>

        </div>

        {!!Form::close()!!}


    </div>
</div>

@stop

@section('custom-scripts')

    <script type = "text/javascript" src = "/js/Vibrant.js"></script>

    <script type = "text/javascript">

        function readLogo(input) {
            if (input.files && input.files[0]) {
                var reader = new FileReader();
                reader.onload = function (e) {
                    $('#skill-icon').attr('src', e.target.result);
                }
                reader.readAsDataURL(input.files[0]);
            }
        }

        // Update media preview with base64 image
        $( "input[name*='logo_path']" ).change(function(){
            readLogo(this);
        });

        $( "#url-logo" ).on('keyup',function(){
            $('#skill-icon').attr('src', $( "#url-logo" ).val());
        });

        $('#text-value').text($('#range-value').val());
        $('#range-value').change(function(){
            $('#text-value').text($('#range-value').val());
        });

        // Icon
        var icon = $('#skill-icon');
        icon.attr('src', $( "#url-logo" ).val());

        $( "#url-logo" ).on('keyup',function(){

            var vibrant = new Vibrant(icon[0]);
            var swatches = vibrant.swatches()
            for (var swatch in swatches)
                if (swatches.hasOwnProperty(swatch) && swatches[swatch])
                    // console.info(swatches[swatch].getHex());
                    var color = swatches[swatch].getHex();
                    $( "input[name*='color_code']" ).val(color)
                    console.info('%c >>>>>>>>>>>>>>', "color:" + String(color) + ";");
                    console.info('color',color);

                    // Vibrant #3c62ac
                    // Muted #7484ab
                    // DarkVibrant #345cab
                    // DarkMuted #101010
                    // LightVibrant #849ccc

        });


    </script>
@stop

Пожалуйста, дайте мне знать, если вы заметите что-то, что я не должен делать.

У вас есть блок ресурсов в вашем файле маршрутов для навыков? Если это так, он должен идти по указанным вами маршрутам.

aynber 07.02.2019 14:41

можете ли вы опубликовать свою форму из своего представления, скорее всего, там есть ошибка, так как похоже, что вы используете метод get - или имеете неправильное действие = ""

CodeBoyCode 07.02.2019 14:42

@aynber Я добавил в свой пост: i.imgur.com/VYTZSgM.png

code8888 07.02.2019 14:43

@CodeBoyCode Я обновил свой пост, указав код просмотра skill>create.blade.php.

code8888 07.02.2019 14:46

@kyo вы должны где-то зарегистрировать маршрут. Сделать artisan route:list

Devon 07.02.2019 14:46

@Девон, попробуй, у меня есть artisan: command not found

code8888 07.02.2019 14:47

@Devon Попробуйте также php ремесленник маршрут: список, есть Class App\Http\Controllers\CommentController does not exist

code8888 07.02.2019 14:48

вы создали контроллер под названием CommentController ??

CodeBoyCode 07.02.2019 15:08

@CodeBoyCode: у меня была проблема с кешем. Я получил свой маршрут для отображения сейчас, обновлю пост для вас.

code8888 07.02.2019 15:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
3 011
4

Ответы 4

У вас нет метода = на вашем И именно поэтому предположим, что Route::resource setup предполагает, что вы пытаетесь получить доступ к методу show.

Form::open(array('url' => 'foo/bar', 'method' => 'POST'))

Я не согласен. Form::open будет использовать POST по умолчанию.

code8888 07.02.2019 14:58

Также добавьте {{ csrf_field() }} в форму

Amit Senjaliya 07.02.2019 14:58

@kyo Согласен, попробуйте добавить токен csrf в форму

Amit Senjaliya 07.02.2019 14:59

если вы уже вручную написали такие маршруты

//Skill
Route::get('skill','SkillController@index');
Route::get('skill/create','SkillController@create');
Route::post('skill/store','SkillController@store');
Route::get('skill/{id}/edit', 'SkillController@edit');
Route::post('skill/{id}/update','SkillController@update');
Route::delete('skill/{id}/destroy','SkillController@destroy');

тогда вам не нужен этот код, этот код должен быть где-то на ваших маршрутах

Route::resource('skills','SkillController');

или

вы можете удалить все свои написанные вручную маршруты skillcontroller

изменить его на этот

Route::resource('skills', 'SkillController', ['only'=> ['index','create','store','delete','edit','update']]);

@kyo вам нужно выбрать либо использование route::resource только с помощью, либо написать его вручную, как у вас

Ghiffari Assamar 07.02.2019 15:11

Да, как я и думал в своем первоначальном комментарии, вы не указали действие для формы - это должно решить ваши проблемы:

{!! Form::open(array('class' => 'form-horizontal', 'role' =>'form', 'url'=>'skill/store', 'action' => 'SkillController@store' ,'files' => true)) !!}

также ваши маршруты неверны - ваши маршруты должны быть:

Route::get('skill','SkillController@index');
Route::get('skill/create','SkillController@create');
Route::post('skill/store','SkillController@store');
Route::get('skill/{id}/edit', 'SkillController@edit');
Route::patch('skill/{id}/update','SkillController@update'); //this should be put or patch not post
Route::delete('skill/{id}/destroy','SkillController@destroy');

Laravel Form::open() По умолчанию предполагается метод POST; однако вы можете указать другой метод:

Amit Senjaliya 07.02.2019 15:02

Это просто проблема заказа маршрута.

Сделайте порядок маршрута следующим образом:

//Skill
Route::post('skill/store','SkillController@store');
Route::get('skill','SkillController@index');
Route::get('skill/create','SkillController@create');
Route::post('skill/{id}/update','SkillController@update');
Route::delete('skill/{id}/destroy','SkillController@destroy');
Route::get('skill/{id}/edit', 'SkillController@edit');

ИЛИ

Если вы создаете модуль CRUD, используйте метод маршрутизации Laravel «Контроллеры ресурсов» https://laravel.com/docs/5.7/controllers#resource-контроллеры

Сначала создайте контроллер ресурсов: выполните команду ниже в терминале

php artisan make:controller SkillController --resource

Затем поместите строку ниже в файле route/web.php

Route::resource('skill', 'SkillController');

Другие вопросы по теме