【问题标题】:Laravel forms don't proccess external urlsLaravel 表单不处理外部 url
【发布时间】:2021-02-12 17:34:40
【问题描述】:

我有一个在 Cpanel 中运行的 Laravel 8 应用程序。我有一个表格来编辑博客文章。当我插入外部图像以显示在帖子正文中并保存表单时,应用程序崩溃。当我删除图像时,表单有效。

BadMethodCallException 方法 App\Http\Controllers\Backend\NewsBackController::show 不存在。

同一应用在另一台服务器上运行良好。

在控制器中更新

public function update(Request $request, $id)
{

    $post = Post::find($id);

    $post->title = $request->input('title');
    $post->slug = $request->input('slug');
    
    $post->sumary = $request->input('sumary');
    $post->content = $request->input('content');

    $post->img = $request->input('img');

    $post->tag_id = $request->input('tag_id');
    $post->pub_date = $request->input('pub_date');
    $post->status = $request->input('status');
    $post->save();

    return redirect('backend-news/'.$id.'/edit')->with('success', 'Successful update!');

}

刀片中的表单

@csrf

<div class="row">

    <div class="col-md-8">

        <div class="form-group ">
            <label >Title</label>
            <input type="text" name='title' class="form-control" @if(!empty($content->title)) value="{{$content->title}}" @endif required>
        </div>

        @if ($form == 'update')
            <div class="form-group ">
                <label>Slug</label>
                <input type="text" name='slug' class="form-control" @if(!empty($content->slug)) value="{{$content->slug}}" @endif>
            </div>
        @endif

        <div class="form-group ">
            <label >Sumary <small>(120 characters max.)</small></label>
            <textarea name="sumary" class="form-control" rows="4">@if(!empty($content->sumary)){{$content->sumary}} @endif</textarea>
        </div>

        <div class="form-group ">
            <label >Content</label>
            <textarea name="content" class="form-control summernote" rows="15">@if(!empty($content->content)){{$content->content}} @endif</textarea>
        </div>

    </div>

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

        <div class="form-group">
            <label>Image Large <small>(120 characters max.)</small></label>
            <input type="text" name='img' class="form-control" @if(!empty($content->img)) value="{{$content->img}}" @endif>
        </div>

        <div class="row">
            <div class="col-md-6">
                <div class="form-group ">
                    <label for='group'>Tags</label>
                    <select class="form-control m-b" name="tag_id">

                        <option value='0'>--SELECT--</option>
                        @foreach ($tags as $tag)

                            @php
                                if($form == 'update'){
                                    $selected = ($content->tag_id == $tag->id)?'selected':'';
                                }else{
                                    $selected = '';
                                }
                            @endphp

                            <option value='{{$tag->id}}' {{$selected}}>{{$tag->name}}</option>
                        @endforeach
                    </select>
                </div>
            </div>

            <div class="col-md-6">

                <div class="form-group ">
                    <label >Pub Date</label>
                    <div class="input-group date">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span><input type="text" class="form-control" name='pub_date' 
                        @if (!empty($content->pub_date))
                            value="{{$content->pub_date}}"
                        @else
                            value="{{date('Y-m-d')}}"
                        @endif
                        >
                    </div>
                </div>

            </div>
        </div>

        <div class="form-group ">

            <label for='group'>Status</label>
            <select class="form-control m-b" name="status">
                @if ($form == 'update')
                    @if ($content->status == 1)
                        <option value='1' selected>Published</option>
                        <option value='0'>Unpublish</option>
                    @else
                        <option value='1'>Published</option>
                        <option value='0' selected>Unpublish</option>
                    @endif
                @else
                    <option value='1'>Published</option>
                    <option value='0'>Unpublish</option>
                @endif

            </select>
        </div>

        <div class="hr-line-dashed"></div>

        <button type="submit" class="btn btn-w-m btn-success">Save</button>
        @if(!empty($put))
        <input type="hidden" name="_method" value="PUT">
        @endif
        <a href="/backend-news" class="btn btn-w-m btn-default"><i class="fas fa-undo-alt"></i> Return</a>
    </div>

</div>

谢谢

【问题讨论】:

  • 所以要么是该控制器上不存在 show 函数,要么是缓存问题
  • 在 Controllers\Backend\NewsBackController 中找到 show() 方法

标签: laravel


【解决方案1】:

首先仔细检查您的控制器,它是否具有显示功能?

如果显示功能存在,请运行以下 artisan 命令:

php artisan cache:clear
php artisan config:cache
php artisan view:clear
php artisan route:clear

如果显示功能不存在,则创建它。

希望这会有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多