Nenalezení dané Class NiftyGrid\Grid

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Nevinho
Člen | 77
+
0
-

Zdravím, naimportoval jsem si novou vezri nette a trošku se ztrácím v namespaces.

Mám Elektro → app/model/ProductGrid

<?php

use NiftyGrid\Grid;

class ProductGrid extends Grid
{
    protected $products;

    public function __construct($products)
    {
        parent::__construct();
        $this->product = $products;
    }

    protected function configure($presenter)
    {
        $source = new \NiftyGrid\DataSource\NDataSource($this->product->select('product.ID,Title,Price,Description'));

        $this->setDataSource($source);

        $this->setWidth("600px");


        $this->addColumn('Title', 'Název produktu', '190px')
             ->setTextFilter()
          //   ->setSelectEditable($presenter->context->database->table('firmy')->fetchPairs('id','nazev_firmy'),"-Vybrat firmu-")
             ->setAutocomplete(5);

        $this->addColumn('Price', 'Cena', '100px')
             ->setNumberFilter()
             ->setTextEditable()
             ->setAutocomplete(5);

        $this->addColumn('Description', 'Popis produktu', '200px')
             ->setTextFilter()
             ->setTextEditable()
             ->setAutocomplete(5);




       $self = $this;


       $this->setRowFormCallback(function($values) use ($self, $presenter){


       $produkt=array('id'=>$values['id'],'Title'=>$values['title'],'Price'=>$values['typ'],'Description'=>$values['Description']);
           if(isset($values['id'])){
                $presenter->database->table('product')->where("id", $values["id"])->update($produkt);
                $self->flashMessage("Pobočka byla editována!", "grid-successful");
            }
            else{
                    $presenter->database->table('product')->insert($produkt);
                    $self->flashMessage("PoboÄŤka byla vloĹľena!", "grid-info");
            }

            }
        );

        $this->addButton(Grid::ROW_FORM, "Editace")
             ->setClass("fast-edit");

        $this->addGlobalButton(Grid::ADD_ROW, 'Přidat novou pobočku');


        $this->addButton("delete", "Smazat")
             ->setClass("delete")
             ->setAjax(FALSE)
             ->setLink(function($row) use ($self){return $self->link("delete!", $row['id']);})
             ->setConfirmationDialog(function($row){return "UrÄŤitÄ› chcete smazat tuto poboÄŤku?";});

	}








    function handleDelete($id) {
    $this->pobocky->where('id',$id)->delete();
    $this->flashMessage("Pobočka byla smazána","grid-info");
    $this->redirect('this');
    }



}

Dále mám Elektro->app\presenters\DataPresenter

<?php

namespace App\Presenters;





/**
 * Description of DataPresenter
 *
 * @author Jirka
 */
class DataPresenter extends BasePresenter {


     protected function startup()
    {
        parent::startup();

         if (!$this->user->isLoggedIn()) {
            $this->redirect('Sign:in', array('backlink' => $this->storeRequest()));



        }
    }

     protected function createComponentProductGrid()
    {
        return new \ProductGrid($this->context->database->table("product"));
    }




}

Data:product.latte

{block #content}

<h1>Products</h1>
{control productGrid}

a config neon:

#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
#
# If you don't protect this directory from direct web access, anybody will be able to see your passwords.
# https://nette.org/en/security-warning
#
parameters:


php:
	date.timezone: Europe/Prague
	# zlib.output_compression: yes


nette:
	application:
		errorPresenter: Error
		mapping:
			*: App\*Module\Presenters\*Presenter

	session:
		expiration: 14 days


services:
	- App\RouterFactory
	- App\Users
	router: @App\RouterFactory::createRouter
	authenticator:				Authenticator

Jinak NiftyGrid\Grid je ulozen v Elektro->vendor\NiftyGrid\Grid

Problém je že když chci přistoupit k tomu productGrid tak mi to hodí hlášku Class ‚NiftyGrid\Grid‘ not found, vím že bude někde chyba v namespaces, ale nevím jak na to, vyzkoušel jsem už mnoho kombinací a nemůžu na to dojít :-(. Poradí někdo? Díkec.

amik
Člen | 118
+
0
-

Sice jsi sem hodil kilometr kódu :) , což není na fóru úplně žádané (navíc, jak by s tím mohl souviset data presenter, případně config?), ale zdroják té třídy NiftyGrid ne :) Pokud tu třídu skutečně máš a je definovaná v namespace NiftyGrid, bude to spíš nějaký problém s autoloadingem.

Pro příště, než se zeptáš na fóru, zkus chybu lépe izolovat, na dotazy typu „tady máte tisíc řádků kódu, někde mám chybu a neumím jí najít“, obvykle nikdo neodpovídá.