控制器的重定向太多



当我尝试使用ImagesController定义路线时,我会在转到应该是索引的情况下会遇到一个"重定向您的网站"错误。我很难过。我是否过度训练,看不到明显的东西?

web.php

Route::prefix('images')->group(function(){
    Route::post('add-tag', 'ImagesController@addTag');
    Route::get('test', 'ImagesController@index');
});

当我访问/images/test时,控制器响应正确。当我将其定义为'' /时,它将重定向太多。我不是同时设置它们。

Route::prefix('images')->group(function(){
    Route::post('add-tag', 'ImagesController@addTag');
    // like this:
    Route::get('', 'ImagesController@index');
    // or like the following: 
    Route::get('/', 'ImagesController@index');
});

我什至尝试在前缀组之前定义/图像无济于事。在这种情况下,images/test很好。

Route::get('images', 'ImagesController@index');
Route::prefix('images')->group(function(){
    Route::post('add-tag', 'ImagesController@addTag');
    Route::get('test', 'ImagesController@index');
});

imagsController.php

namespace AppHttpControllers;
use Auth;
use AppHelpers;
use AppImage;
use AppTag;
use IlluminateHttpRequest;
use IlluminateSupportFacadesLog;
use SymfonyComponentConsoleHelperHelper;
class ImagesController extends Controller
{
    private $sortBy = [
        'created_at',
        'updated_at',
        'orig_name',
        'orig_size'
    ];    
    private $defaultSortBy = 'created_at';
    private $defaultOrder = 'desc';
    /**
     * @param Request $request
     * @return IlluminateContractsViewFactory|IlluminateViewView
     */
    public function index(Request $request)
    {
        $sort = $request->get('sort', $this->defaultSortBy);
        $sort = in_array($sort, $this->sortBy) ? $sort : 'created_at';
        $order = $request->get('order', $this->defaultOrder);
        $order = $order == 'desc' ? 'desc' : 'asc';
        $images = Image::orderBy($sort, $order)
            ->whereQuestionable(0)
            ->wherePrivate(0)
            ->paginate(config('image.images_per_page'));
        if ($images !== null && $sort !== $this->defaultSortBy) {
            $images->appends(['sort' => $sort]);
        }
        if ($images !== null && $order !== $this->defaultOrder) {
            $images->appends(['order' => $order]);
        }
        return view(
            'images.index',
            [
                'images' => $images,
                'sort' => $sort,
                'order' => $order
            ]
        );
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return IlluminateHttpResponse
     */
    public function create()
    {
        //
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        //
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function edit($id)
    {
        //
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function update(Request $request, $id)
    {
        //
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function destroy($id)
    {
        //
    }
    //this function works correctly, but I suppose it may be interfering?
    public function addTag(Request $request)
    {
        Log::debug(print_r($request->all(), true));
        $error = '';
        $uid = trim($request->input('uid', ''));
        $newTag = Helpers::prepTag($request->input('tag', ''));
        if (!Auth::check()){
            $error .= 'You can only add tags to images if you are logged in.';
        } else if ($uid === '' || $newTag === '') {
            $error .= 'UID and tag cannot be empty';
        } else {
            $image = Image::whereUid($uid)->unQuestionable()->first();
            $currentTags = [];
            if (count($image->tags)){
                foreach ($image->tags as $currentTag) {
                    $currentTags[$currentTag->id] = $currentTag->tag;
                }
            }
            if ($image === null) {
                $error .= "Image $uid was not found.";
            } else {
                $tag = Tag::firstOrNew(['tag'=>$newTag]);
                if ($tag->ip == '') {
                    $tag->ip = $request->getClientIp();
                    $tag->user_id = Auth::check() ? Auth::user()->id : 5;
                    $tag->save();
                }
                //Log::info(print_r($currentTags, true));
                //Log::info(print_r($tag, true));
                $addTag = !(bool)isset($currentTags[$tag->id]);
                $image->tags()->sync([$tag->id], false);
            }
        }
        if ($request->ajax()) {
            if ($error !== '') {
                return response()->json(['message' => $error],400);
            }
            return response()->json(['tagId' => $tag->id, 'imageUid' => $image->uid, 'tag' => $tag->tag, 'isAdmin' => true, 'addTag' => $addTag]);
        } else {
            if ($error !== '') {
                Helpers::alert(3, $error, 'Tag Not Added');
            }
            return redirect('/');
        }
    }
}

我有一个名为 Images隐式绑定的模型正在干扰使用名称ImagesController的控制器的定义路由,并应用前缀/images。将路由中的名称更改为image后,此问题消失了。

最新更新