Where is your model and controller?
Kalnoy Nestedset
I installed kalnoy nestedset on laravel 7.x
but when i use it the beforeNode or $node->afterNode($relative)->save(); wont do anything? even when i call Model::fixTree()?
Here's my Model and controller?
Model:
Page.php
heres my model
namespace Package\CMS;
use Illuminate\Support\Facades\Cache; use Illuminate\Database\Eloquent\Model; use Laratrust\Traits\LaratrustUserTrait; use Illuminate\Database\Eloquent\SoftDeletes; use Kalnoy\Nestedset\NodeTrait; use Laracasts\Presenter\PresentableTrait;
class Page extends Model { use SoftDeletes; use NodeTrait; use PresentableTrait;
protected $presenter = 'Package\CMS\Presenters\PagePresenter';
public function ImageThumb($image) {
$img = Image::make($image)->resize(300, 200);
}
public function relatedFiles() {
return $this->hasMany('Skylarnet\CMS\File');
}
public function updateOrder($order, $orderPage) {
//dd($this, $order, $orderPage);
$relative = Page::findOrFail($orderPage);
if($order == 'before') {
$this->beforeNode($relative)->save();
} elseif ($order == 'after') {
$this->afterNode($relative)->save();
} else {
$relative->appendNode($this);
}
Page::fixTree();
}
}
and here is my controller
namespace Package\CMS\Controllers;
use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\File; use Illuminate\Support\Str;
use Package\CMS\Page; use Image;
class PageController extends Controller {
private $Message;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Page $Pages) {
$this->Pages = $Pages;
$this->cache_seconds = $_ENV['CACHE_SECONDS'];
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$index = '1';
$Page = new Page();
if ($request->has('name')) $Page->name = $request->input('name');
if ($request->has('title')) $Page->title = $request->input('title');
$Page->slug = Str::Slug($request->input('title'));
$latestSlug = Page::whereRaw("slug RLIKE '^{$Page->slug}(-[0-9]*)?$'")
->latest('id')
->pluck('slug')
->first();
if($latestSlug) {
$slugBlocks = explode('-', $latestSlug);
$number = end($slugBlocks);
$Page->slug .= '-' . ($number + 1);
}
if ($request->has('content')) $Page->content = $request->input('content');
if ($request->has('status')) {
$Page->status = '1';
} else {
$Page->status = '0';
}
$this->updatePageOrder($Page, $request);
$Page->save();
return redirect()->route('pages.index');
}
protected function updatePageOrder(Page $Page, Request $request) {
if($request->has('order', 'orderPage')) {
if($Page->id == $request->orderPage) {
flash('Cannot Order Page against itself')->error();
return redirect(route('pages.edit', ['page' => $Page->id]))->withInput();
}
$Page->updateOrder($request->order, $request->orderPage);
}
}
}
I just found out if i change those 2 files to the namespace App and App\Http\Controllers en copied the files to those dirs it works?
how is this possible and what do i miss or do it wrong why it isn't working in mine package?
Please or to participate in this conversation.