ajax, input ve formuláři, výpis z DB
- Oli
- Člen | 1215
Uděláš to zhruba takhle:
<input id="idInputu" />{snippet someSnippet}{$info}{/snippet}
$.ajax({
type: "POST",
url: {link idFromDb!},
data: { id: $('#idInputu').val() }
})
V presenteru potom něco jako
public function handleIdFromDb()
{
$id = $this->httpRequest->post('id');
$this->template->info = $this->model->getById($id);
$this->redrawControl('someSnippet');
}
- plzurq
- Člen | 3
public function handleIdFromDb() {
dump($id);
$id = $this->httpRequest->post('id');
$this->template->info = $id;//$this->cityRepository->findByZip($id);
$this->redrawControl('someSnippet');
}
nic se nedumpuje. Požadavek se posílá po každém stisku klávesy?
konzola:
exception 'Nette\MemberAccessException' with message 'Cannot read an undeclared property App\HomepagePresenter::$httpRequest.' in C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\common\ObjectMixin.php:154
Stack trace:
#0 C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\common\Object.php(123): Nette\ObjectMixin::get(Object(App\HomepagePresenter), 'httpRequest')
#1 C:\xampp\htdocs\plyn\app\presenters\HomepagePresenter.php(105): Nette\Object->__get('httpRequest')
#2 [internal function]: App\HomepagePresenter->handleIdFromDb()
#3 C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\Application\UI\PresenterComponent.php(90): ReflectionMethod->invokeArgs(Object(App\HomepagePresenter), Array)
#4 C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\Application\UI\PresenterComponent.php(259): Nette\Application\UI\PresenterComponent->tryCall('handleidFromDb', Array)
#5 C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\Application\UI\Presenter.php(320): Nette\Application\UI\PresenterComponent->signalReceived('idFromDb')
#6 C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\Application\UI\Presenter.php(203): Nette\Application\UI\Presenter->processSignal()
#7 C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\Application\Application.php(149): Nette\Application\UI\Presenter->run(Object(Nette\Application\Request))
#8 C:\xampp\htdocs\plyn\vendor\nette\nette\Nette\Application\Application.php(88): Nette\Application\Application->processRequest(Object(Nette\Application\Request))
#9 C:\xampp\htdocs\plyn\www\index.php(8): Nette\Application\Application->run()
#10 {main}
(stored in C:\xampp\htdocs\plyn\log\exception-2014-03-24-20-45-28-374e68affbd32f9ac85eedffcd741153.html
Editoval plzurq (24. 3. 2014 20:48)
- Oli
- Člen | 1215
nic se ti dumpnout nemuze. Ze dvou duvodu:
- Protoze se vraci JSON a pokud to co vraci obsahuje dump, tak to ani nefunguje. Misto dump tam dej
$this->payload->dump = $id;
- protoze dumpujes $id pred tim, nez ho vytvoris.
Kdy se to vpise nevim, to si musis implementovat v tom jQuery.
PS. psal jsem to z hlavy, mozna to neni uplne presne. cemuz by odpovidala
i ta chybova hlaska v consoli. Kdy to bude spravne tak v consoli bude
napr: dump = 2
- Jiří Nápravník
- Člen | 710
Presenter dedi od Nette\Object, jako snad vsechny tridy. Nicmene pres $this->httpRequest to nejde z toho duvodu, ze $httpRequest je private…
- Oli
- Člen | 1215
No to by neměl být ten důvod. Když použiju svou třídu, která dědí od Nette\Object, tak se k private atributům dostanu:
class MyClass extends \Nette\Object
{
/** @var \Repository\OrganizerRepository */
private $organizerRepository;
/**
*
* @return \Repository\OrganizerRepository
*/
public function getOrganizerRepository()
{
return $this->organizerRepository;
}
}
// presenter
$this->myClass->organizerRepository->getAll();
Spíš mě napadá to, že getHttpRquest je protected a to by mohl být ten důvod…
- Jiří Nápravník
- Člen | 710
Jo tady je to jasný, protože na tu třídu saháš zvenku. Já měl za to, ale že když jsi v POTOMKU, tak se prvně podívá jeslti není ten atribut nastaven a pak teprve hledá gettery. Ale teď jsem odzkoušel a není to tak, takže máš pavdu nejspíše ty s protected method