Komponenta a include js knihovny

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

Zdravím,

mám vytvořenou komponentu, která potřebuje js knihovnu. nechci natvrdo do layoutu tuto js knihovnu dávat.

Jak můžu z šablony komponenty vložit js knihovny do layoutu?

Pavel Kravčík
Člen | 1196
+
-2
-

Layout:

{ifset #javascript}
	{include #javascript}
{/ifset}

Latte komponenty:

{define #javascript}
...
{/define}
ondrej256
Člen | 187
+
0
-

To jsem zkoušel ale nefunguje. Nevyhodí se žádná chyba a ani se nic do layoutu nevloží

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

A máš je provázané?

akadlec
Člen | 1326
+
+2
-

z komponenty přece nemůžeš vyvážet bloky do layoutu stránky ne?

akadlec
Člen | 1326
+
0
-

Jinak abych jen tak neplkal, řešil bych to assets loaderem, normálně si jej dotáhnout do komponenty a předat mu statické fajly co se mají přidat, já to takto řeším. Navíc to mám uděláno tak že můj assets loader má k dispozici i provider takže registraci statických fajlů můžu udělat přímo v registraci nějaké extension.

Freema
Člen | 18
+
0
-

Ahoj nehledáš náhodou tohle:

<?php

namespace FrontModule\Components;

use Nette\Application\UI\Control;
use Nette\ComponentModel\IContainer;

/**
 * Description of TestComponents
 * @author Tomáš Grasl <grasl.t@centrum.cz>
 */
class TestComponents extends Control {

    /**
     * @param IContainer $parent
     * @param string $name
     */
    final function __construct(IContainer $parent = NULL, $name = NULL) {
        parent::__construct($parent, $name);
    }

    /**
     * @see Nette\Application\Control#render()
     * @return void
     */
    public function render() {
        $this->renderJS();
        $this->renderHTML();
    }

    /**
     * @return void
     */
    public function renderJS() {
        $this->template->setFile(dirname(__FILE__) . '/js.latte');
        $this->template->render();
    }

    /**
     * @return void
     */
    public function renderHTML() {
        $this->template->setFile(dirname(__FILE__) . '/template.latte');
        $this->template->render();
    }

}
?>

Pak v šabloně (@layout.latte) volat jednotlivé bloky componetny:

{control test:HTML}
{control test:JS}