Различные ошибки при попытке добавить дополнительную функцию в CRUD - PullRequest
0 голосов
/ 09 марта 2019

Во-первых, я явно не совсем понимаю маршрутизацию.Эта проблема связана не с БД, а с управлением изображениями в папке, но я использовал процесс Resource для создания элементов crud.Возможно, это неправильный подход к управлению файлами.

У меня есть следующее представление (это не законченное представление, только для тестирования):

@extends('layouts.app')
@section('content')
<!--/*{ { dd(get_defined_vars(), url()->current()) } }*/-->
@if(!Auth::guest())
    @if(Auth::user()->admin == 1)
        <h3>Manage Gallery</h3>
    @else
        <h3>Gallery </h3>   
    @endif
@else
    <h3>Gallery (Visitor)</h3>  
@endif

<style>
.flex-container {
           display: -webkit-flex;
           display: flex;
           -webkit-flex-direction: row;
           flex-direction: row;
           -webkit-align-items: center;
           align-items: center;
           justify-content: space-around;
           flex-wrap: wrap;
           min-width: 100px;
           max-width: 1100px;
        }
        .flex-item {
            display:flex;
        align-items: center;
        /*height: 100px;
        width: 200px;*/
        background-color: #f5f8fa;
        color: white;
        justify-content: space-between;
        margin: 3px;
        padding: 10px 0 0 10px;
        }
.flex-item img{
    flex-grow:0;
    flex-shrink:0;
}
        span {
            padding-left: 5px;
        }
</style>


@if(count($data['folders'])>0)

    <div class="flex-container">
    @foreach ($data['folders'] as $folder)

            <div class="flex-item">

                <form action="{{action('GalleryController@show', $folder)}}" method="get">
                    <input name="_method" type="hidden" value="show">
                        <button class="btn btn-lg px-5 btn-primary" style="margin:5px" type="submit" role="button" <img src="assets/folder_image.png" height="30">{{$folder}}</button>
                </form>

            <!-- --------------------------------------- -->
            <!-- Only show crud buttons if administrator -->
            <!-- --------------------------------------- -->

            @if(!Auth::guest())
                @if(Auth::user()->admin == 1)
                    <a href="{{action('GalleryController@edit',$folder)}}" class="btn btn-primary btn-sm">Delete 1 Picture</a>&nbsp;
                            <form action="{{action('GalleryController@destroy', $folder)}}" method="post">
                                {{csrf_field()}}
                                <input name="_method" type="hidden" value="DELETE">
                                <button class="btn btn-danger btn-sm" type="submit">Delete entire Folder</button>
                            </form>

                            <a href="{{action('GalleryController@add',$folder)}}" class="btn btn-primary btn-sm">Add piccies</a>&nbsp;
                    <form action="{{action('GalleryController@add')}}" method="post">
                                {{csrf_field()}}
                                <input name="folder" type="hidden" value='{{$folder}}'>
                                <button class="btn btn-info btn-sm" style="margin:5px" type="submit">Add new pictures</button>
                            </form>

                @endif
            @endif  


            </div>
    @endforeach
    @if(!Auth::guest())
        @if(Auth::user()->admin == 1)
        <div class="flex-item" style="width:1500px">        <!-- large width forces flexbox to new row -->
            <a href="{{action('GalleryController@create')}}" class="btn btn-primary btn-sm">Create</a>
        </div>  
        @endif
        @endif  

    </div>
@else
    @if(!Auth::guest())
        @if(Auth::user()->admin == 1)
            <br><br><br>
            <a href="{{action('GalleryController@create')}}" class="btn btn-primary btn-sm">Create</a>
        @endif
        @endif  
    <p>No Gallery Folders available.</p>
@endif




@endsection

Я не могу вспомнить ПОЧЕМУ я используюссылка для «удаления 1 изображения» и форма для «удаления всей папки».Я предполагаю, что нашел это в некотором учебнике и только использовал это.Я хочу удалить определенное изображение (это прекрасно работает с использованием компонента 'edit' контроллера) или удалить всю папку (это также нормально работает с использованием компонента 'destroy' контроллера).

Итак, следующий шаг - добавить новые папки или изображения в определенную папку.Добавление новой папки также работает нормально с использованием компонента «Контроллер» контроллера.

Затем он разваливается, пытаясь добавить новое изображение.С кодом, показанным на рисунке, я получаю 2 разные ошибки в зависимости от того, нажимаю ли я кнопку «Добавить изображения» или кнопку «Добавить новые фотографии».

Мой маршрут (и я пробовал получать и отправлять):

Route::post('/gallery/add/', 'GalleryController@add');
/* Dynamically create all routes for CRUD for gallery table */
Route::resource('gallery', 'GalleryController');

Если я использую кнопку «Добавить картинки», я получаю URL-адрес «http://hdkumdo.com/lsapp/public/gallery/add?2019_Masters', где? 2019 и т. Д. Относится к этой папке.Если я использую кнопку «Добавить новое изображение», я получаю сообщение об ошибке «Ошибка типа: слишком мало аргументов для функции App \ Http \ Controllers \ GalleryController :: add (), 0 передано и ожидается ровно 1».

Если я изменяю маршрут от поста к получению, я получаю сообщение об ошибке «Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message».

Представленное представление выглядит так: Вид кнопок

Поскольку я использовал базовые элементы CRUD, созданные RESOURCE, я добавил новую функцию в контроллер, думая, что могу просто вызвать ее. Фрагмент кода:

/**
     * Show the form for uploading pictures.
     *
     * @return \Illuminate\Http\Response
     */
    public function add($gallery)
    {
    $folder = $gallery;
    $title = 'Add Pictures';
    TheUser::get_Role();
    $userRole = session('userRole');
        Log::info('GalleryController.add called : user Role =>' . $userRole . ' Folder:' . $folder );
    $data = array(
            'userRole' => $userRole,
        );
    /*dd($data);*/
    return view('gallery.add')->with('title', $title)->with('data', $data);
    }

Итак, любойпредложения / советы и т. д. будет приветствоваться.

1 Ответ

0 голосов
/ 17 марта 2019

Смотрите комментарии выше.Это то, о чем нужно знать, так как мне потребовалось несколько дней, чтобы почесать голову, и потребовалось немного побочного мышления.

...