LavaLite / cms

Multilingual PHP CMS built with Laravel and bootstrap
https://lavalite.org
2.83k stars 963 forks source link

Undefined variable: parent at vendor/lavalite/framework/src/Litepie/Menu/Http/Controllers/SubMenuResourceController.php:32) #283

Closed agasigp closed 5 years ago

agasigp commented 5 years ago

I got an server error when I clicked the link on Menu. Here's the output of log error & screenshot of the error :

kcifuentes commented 5 years ago

hi @agasigp I hope you are well, could you already solve this error ?, I have the same error and I can not solve it, I would greatly appreciate it if you can help me.

gachowy commented 5 years ago

@kcifuentes that seems to be solved there: https://github.com/LavaLite/framework/pull/44, but not merged yet by @Renfos yet

agasigp commented 5 years ago

@gachowy Yup, I did that PR but not merged yet. For temporary, my solution is overide the controller and route (web.php)

// routes/web.php
Route::group(
    [
        'prefix' => trans_setlocale() . '/admin/menu',
    ],
    function () {
        Route::resource('submenu', 'SubMenuResourceController');
    }
);

// app/Http/Controllers/SubMenuResourceController.php
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\ResourceController as ResourceController;
use Form;
use Litepie\Menu\Http\Requests\MenuRequest;
use Litepie\Menu\Interfaces\MenuRepositoryInterface;

class SubMenuResourceController extends ResourceController
{
    public function __construct(MenuRepositoryInterface $menu)
    {
        $this->repository = $menu;
        parent::__construct();
    }

    /**
     * Display the specified resource.
     *
     * @param Request $request
     * @param int     $id
     *
     * @return Response
     */
    public function show(MenuRequest $request, $id)
    {
        $menu = $this->repository->find($id);
        Form::populate($menu);

        return view('menu::admin.sub.show', compact('menu'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @param Request $request
     *
     * @return Response
     */
    public function create(MenuRequest $request)
    {
        $menu = $this->repository->newInstance([]);
        $menu->parent_id = $request->get('parent_id', 0);

        Form::populate($menu);

        return view('menu::admin.sub.create', compact('menu'));
    }

    /**
     * Create the specified resource.
     *
     * @param Request $request
     *
     * @return Response
     */
    public function store(MenuRequest $request)
    {
        try {
            $attributes = $request->all();
            $attributes['parent_id'] = hashids_decode($attributes['parent_id']);
            $menu = $this->repository->create($attributes);

            return $this->response
                ->message(trans('messages.success.created', ['Module' => trans('menu::menu.name')]))
                ->code(204)
                ->status('success')
                ->url(guard_url('menu/submenu/'.$menu->getRouteKey()))
                ->redirect();
        } catch (Exception $e) {
            return $this->response
                ->message($e->getMessage())
                ->code(400)
                ->status('error')
                ->url(guard_url('menu/menu/submenu'))
                ->redirect();
        }
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param Request $request
     * @param int     $id
     *
     * @return Response
     */
    public function edit(MenuRequest $request, $id)
    {
        $menu = $this->repository->find($id);

        Form::populate($menu);

        return view('menu::admin.sub.edit', compact('menu'));
    }

    /**
     * Update the specified resource.
     *
     * @param Request $request
     * @param int     $id
     *
     * @return Response
     */
    public function update(MenuRequest $request, $id)
    {
        try {
            $attributes = $request->all();

            $menu = $this->repository->update($attributes, $id);

            return $this->response->message(trans('messages.success.updated', ['Module' => trans('menu::menu.name')]))
                ->code(204)
                ->status('success')
                ->url(guard_url('menu/submenu/'.$menu->getRouteKey()))
                ->redirect();
        } catch (Exception $e) {
            return $this->response->message($e->getMessage())
                ->code(400)
                ->status('error')
                ->url(guard_url('menu/submenu/'.$menu->getRouteKey()))
                ->redirect();
        }
    }
}
agasigp commented 5 years ago

The issue was solved. It's been merged.