Grido – rawurlencode array problém

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

Zdravím,
mám problém s gridem, když chci checkboxy označit více položek a přes selectbox potom najednou smazat.

**Warning
rawurlencode() expects parameter 1 to be string, array given **

Laděnka: http://uoerebor.cz/error.html

V BasePresenteru chci udělat redirect:

$this->redirect($operation, array('id' => $id));

nechce mi to ale vzít pole s ID, nevíte kde by mohl být problém?

Děkuji

Pavel Kravčík
Člen | 1195
+
0
-

Máš to tam napsané. $operation je array a musí být string!

Desttro
Člen | 126
+
0
-

kzk_cz napsal(a):

Máš to tam napsané. $operation je array a musí být string!

No tomu rozumím, ale v grido-sandboxu to funguje

/**
 * Common handler for grid operations.
 * @param string $operation
 * @param array $id
 */
public function handleOperations($operation, $id)
{
    if ($id) {
        $row = implode(', ', $id);
        $this->flashMessage("Process operation '$operation' for row with id: $row...", 'info');
    } else {
        $this->flashMessage('No rows selected.', 'error');
    }
    $this->redirect($operation, array('id' => $id));
}

je to přímo z githubu: https://github.com/…resenter.php

druhý parametr má být pole: * @param array $id

greeny
Člen | 405
+
0
-

No a jaký máš router? Může $id přijmout pole?

Desttro
Člen | 126
+
0
-

Moc se v routech nevyznám, můj je takový:

namespace App;

use Nette,
	Nette\Application\Routers\RouteList,
	Nette\Application\Routers\Route,
	Nette\Application\Routers\SimpleRouter;
/**
 * Router factory.
 */
class RouterFactory
{

	/**
	 * @return \Nette\Application\IRouter
	 */
	public static function createRouter()
	{
		$router = new RouteList();
		$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
		return $router;
	}

}

Z grido-sanboxu je takový:

namespace App\Routers;

use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;

/**
 * Router factory.
 */
class RouterFactory
{
    /**
     * @return \Nette\Application\IRouter
     */
    public static function createRouter()
    {
        $router = new RouteList;

        $uri = self::getExtraPath();
        $router[] = new Route("$uri<filterRenderType>/<presenter>/<action>/<ajax>/", array(
            'filterRenderType' => 'inner',
            'presenter' => 'NetteDatabase',
            'action' => 'default',
            'ajax' => 'on',
        ));

        return $router;
    }

    public static function getExtraPath()
    {
        return $_SERVER['HTTP_HOST'] === 'grido.bugyik.cz'
            ? '/example'
            : NULL;
    }
}
Desttro
Člen | 126
+
0
-

Pecka, už jsem na to přišel, díky za nakopnutí! :)

zde je nový funkční router, kdyby se někdo chtěl inspirovat:

namespace App;

use Nette,
	Nette\Application\Routers\RouteList,
	Nette\Application\Routers\Route,
	Nette\Application\Routers\SimpleRouter;


/**
 * Router factory.
 */
class RouterFactory
{

	/**
	 * @return \Nette\Application\IRouter
	 */
	public static function createRouter()
	{
		$router = new RouteList();
		$router[] = new Route("<filterRenderType>/<presenter>/<action>/<ajax>/", array(
            'filterRenderType' => 'inner',
            'presenter' => 'Homepage',
            'action' => 'default',
            'ajax' => 'on',
        ));
		return $router;
	}

}