Strict – Declaration of DataGrid::createTemplate() should be compatible with that of Control::createTemplate()

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

Zdravím. Chtěl bych vás poprosit o radu co dělat s touto hláškou. Objevila se po přechodu z nette 0.9.7 na 2.0 nevím si s tím rady. Předem díky.

Mikulas Dite
Člen | 756
+
0
-

Nette\Application\UI\Control je „nově“ definovavé jako

protected Nette\Templating\ITemplate createTemplate( $class = NULL )

tzn. doplň do DataGrid tu část s $class = NULL a bude to zase kompatibilní.

kokoumes
Člen | 39
+
0
-

Díky za radu, ale objevila se jiná hláška – Interface ‚INamingContainer‘ not found :-(

kokoumes
Člen | 39
+
0
-

Problém stále přetrvává :-( .. Nevíte někdo co s tím? předem díky

Filip Procházka
Moderator | 4668
+
0
-

Mikuláš ti už odpověděl. Nikdo jiný za tebe CTRL+C a CTRL+V udělat nemůže.

kokoumes
Člen | 39
+
0
-

Zdravím,
po delší době se vracím zpět k mému projektu a chyba stále přetrvává – Interface ‚INamingContainer‘ not found. Dle instrukcí nahoře jsem doplnil do datagridu $class = NULL Přesnějš sem:
<?php /**
* Template factory.
* @return ITemplate
*/
function createTemplate($class = NULL)
{
$template = parent::createTemplate();
if ($this->getTranslator() !== NULL) {
$template->setTranslator($this->getTranslator());
}
$template->registerFilter(‚Nette\Templates\CurlyBracketsFilter::invoke‘);
return $template;
 }
?>

Předem díky za jakékoliv nakopnutí.

Editoval kokoumes (28. 11. 2011 11:46)

bojovyletoun
Člen | 667
+
0
-

INamingContainer je stará věc. Podle tohoto -komentáře stačí umazat výskyty implements INamingContainer v definicích tříd. Nebo se můžeš podívat na Gridito a Grinder.

Editoval bojovyletoun (28. 11. 2011 12:38)

kokoumes
Člen | 39
+
0
-

Díky,
ale objevily se další chyby. Nejdříve jedna deprecated(tu jsem upravil), pak String::truncate($text,$this->maxLength); tady mi to hlásí že nezná Class String no i když úpravu toho řetězce vynechám, tak mi píše chybu Component ‚dataGrid‘ is not attached to ‚Nette\Application\Control‘. :-( Začínám z toho být zoufalý :-(
<?php
…/_notes2/app/components/DataGrid/DataGrid/DataGridAction.php:75 source ► Component→ lookup (arguments ►)

/**
* Generates action's link. (use before data grid is going to be rendered)
* @return void
*/
public function generateLink(array $args = NULL)
{
$dataGrid = $this->lookup(‚DataGrid‘, TRUE);
$control = $dataGrid->lookup(‚Nette\Application\Control‘, TRUE);

switch ($this->key) {
case self::WITHOUT_KEY:
$link = $control->link($this->destination); break;
case self::WITH_KEY:
default:
$key = $this->key == NULL || is_bool($this->key) ? $dataGrid->keyName : $this->key;
?>

JuniorJR
Člen | 181
+
0
-

Třída String byla přejmenována na:

Nette\Utils\Strings

Editoval JuniorJR (28. 11. 2011 13:29)

kokoumes
Člen | 39
+
0
-

Děkuji za info, ale problém : Component ‚dataGrid‘ is not attached to ‚Nette\Application\Control‘. stále trvá.

norbe
Backer | 405
+
0
-

Jakým způsobem vytváříš a vykresluješ datagrid? Mám takové tušení, že ručně voláš továrničku, což způsobí že se ti komponenta nepřipojí k presenteru.