Class ‚Calendar‘ not found

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

Dobrý deň mám malí problém s premenými priestormi vie mi niekto poradiť ďakujem, chyba Class ‚Calendar‘ not found

namespace App\Presenters;

use Nette;
use App\Model;
use Calendar;

class HomepagePresenter extends BasePresenter
{

	public function renderDefault()
	{
		$this->template->anyVariable = 'any value';
	}
	protected function createComponentCalendar()
{
  $cal = new Calendar();

  // zkrátí názvy dnů v týdnu na 2 znaky
  $cal->truncateDaysLabelsTo(2);

  return $cal;
}

}

Editoval kasiopia (3. 2. 2016 20:03)

Wailey
Člen | 48
+
+1
-

Zkus toto

	$cal = new \Calendar\Calendar();

popřípadě si zkontroluj namespace :)

kasiopia
Člen | 69
+
0
-

nepomohlo vo vendore mám názov zložky Calendár
Komponenta https://componette.org/search/?…

Editoval kasiopia (3. 2. 2016 20:25)

premek_k
Člen | 172
+
0
-

Jmenný prostor s názvem adresáře nesouvisí. Vodítkem je direktiva „namespace“.

premek_k
Člen | 172
+
+1
-

Jinak bez toho se těžko obejdeš, nastuduj třeba tady.

kasiopia
Člen | 69
+
0
-

Prosim ta ako mám vedieť aké namespace ma byť pridané. ďakujem za pomoc

premek_k
Člen | 172
+
0
-

Koukneš do deklarace té třídy „calendar“. Ale bacha, tu instanci tvoříš v namespace „App\Presenters“, takže se musíš dostat „o úroveň výš“ pomocí lomítka.

Jinak lepší IDEčka (phpStorm) ti to napoví samy.

Martk
Člen | 661
+
+1
-

Doplněk používá jmenný prostor blitzik\Calendar\Calendar

Můžeš to používat takhle:

$calendar = new \blitzik\Calendar\Calendar();

// Nebo
use blitzik\Calendar\Calendar();

$calendar = new Calendar;

// Nebo
use blitzik\Calendar;

$calendar = new Calendar\Calendar();

Více v návodech na různých webech.

Editoval Antik (3. 2. 2016 21:17)

kasiopia
Člen | 69
+
-1
-

Dakujem a odkial mozem vediet use viem na zaklade $calendar = new Calendar(); ale vseobecne ako?Ďakujem za odpoved

Mysteria
Člen | 797
+
+1
-

Use slouží ke zpřehlednění kódu, protože si vem, kdyby jsi chtěl použít třeba 10× tohle, tak se upíšeš k smrti.

$a = new \Moje\Super\Aplikace\Hodne\Zanorena\Komponenta();

Tím, že napíšeš use Moje\Super\Aplikace\Hodne\Zanorena\Komponenta, tak kdekoliv v kódu se narazí na Komponenta, tak se mrkne PHPčko do use, jestli tam náhodou řádek, který ji definuje a pokud jo, tak ji použije.

No a jak zjistíš namespace? No úplně jednoduše se buď podíváš do té třídy a je to první řádek nahoře nebo každé lepší IDE, když začneš psát název třídy, tak by ti mělo vyjet menu, kde je i celá cesta včetně namespace.

kasiopia
Člen | 69
+
-1
-

Dakujem za výklad ale nechápem prečo tato aplikácia nefunguje

<?php

namespace App\Presenters;
use Minetro\Social\Facebook\LikeButton;
use Minetro\Social\Facebook\Script;

/**
 * @return LikeButton
 */
use Nette;
use App\Model;


class HomepagePresenter extends BasePresenter
{

	public function renderDefault()
	{
		$this->template->anyVariable = 'any value';
	}
	protected function createComponentLikeButton()
{
    $button = new LikeButton();
    $attrs = $button->getAttributes();

    // URL - manually
    $attrs->add('data-url', $this->link('Home:default'));

    // URL - current
    $attrs->add('data-url', $this->link('//this'));

    // Add other attributes

    $attrs->add('data-layout', $button::LAYOUT_BUTTON_COUNT);
    // OR
    $attrs->data('layout', $button::LAYOUT_BUTTON_COUNT);

    return $button;
}

/**
 * @return Script
 */
protected function createComponentScript()
{
    return new Script();
}

}

Cesta sedi ako bolo opísane ale vypisuje Component with name ‚likebutton‘ does not exist, did you mean ‚likeButton‘?

David Matějka
Moderator | 6445
+
+3
-

Ja nevim, jak by ta chyba mohla byt jasnejsi, kdyz ti to i rekne, jak to opravit.

Mysteria
Člen | 797
+
0
-

Píše ti to, že máš někde v šabloně přejmenovat likebutton na likeButton, tak bych to zkusil. :)

kasiopia
Člen | 69
+
0
-

Ano ta zložka existuje s daným názvom

kasiopia
Člen | 69
+
0
-

Ďakujem všetkym za rady ale aj tak som to nerozhodil po všetkých variácie {control likebutton} este nieco veď v šablone sa píšu nazvy control vždy s malými písmenami?

Editoval kasiopia (3. 2. 2016 23:06)

David Matějka
Moderator | 6445
+
+2
-

ne, prvni pismeno je male, dalsi jsou dle nazvu v createComponent. Takze spravne je {control likeButton}