Laravel-Backpack/PageManager

Change existing template

Lider07 opened this issue · 3 comments

Bug report

What I did:

Click edit button and after that change template

What I expected to happen:

Change fields

What happened:

404 not found

Problem

Method public function getCurrentEntryId() in Backpack\CRUD\PanelTraits\Read return template type

Backpack, Laravel, PHP, DB version:

Backpack 3.4? Laravel 5.6, PHP 7.2

Hello there! Thanks for opening your first issue on this repo!

Just a heads-up: Here at Backpack we use Github Issues only for tracking bugs. Talk about new features is also acceptable. This helps a lot in keeping our focus on improving Backpack. If you issue is not a bug/feature, please help us out by closing the issue yourself and posting in the appropriate medium (see below). If you're not sure where it fits, it's ok, a community member will probably reply to help you with that.

Backpack communication mediums:

  • Bug Reports, Feature Requests - Github Issues (here);
  • Quick help (How do I do X) - Gitter Chatroom;
  • Long questions (I have done X and Y and it won't do Z wtf) - Stackoverflow, using the backpack-for-laravel tag;

Please keep in mind Backpack offers no official / paid support. Whatever help you receive here, on Gitter, Slack or Stackoverflow is thanks to our awesome awesome community members, who give up some of their time to help their peers. If you want to join our community, just start pitching in. We take pride in being a welcoming bunch.

Thank you!

--
Justin Case
The Backpack Robot

This worked for me:

// Overwrites the CrudController edit() method to add template usage.
    public function edit($id)
    {
        $template = request('template');
        // // if the template in the GET parameter is missing, figure it out from the db
        if ($template == null) {
            $model = $this->crud->model;
            $this->data['entry'] = $model::findOrFail($id);
            $template = $this->data['entry']->template;
        }
        $this->addDefaultPageFields($template);
        $this->useTemplate($template);

        return parent::edit($id);
    }

and in select_page_template.blade.php
window.location.href = strip_last_template_parameter(current_url)+'?template='+new_template;

You're totally right @Lider07 and @g87andres - that's the expected behaviour, and that's how it used to work, no idea when this got broken.

@g87andres thanks for the fix, I just pushed your code into master now, a composer update and asset republishing should fix it for everyone.

Thanks again, cheers!