Obnovenie obsahu stranky po zmene dat v DB
- lamer
- Člen | 6
Zdravim vsetkych nettakov.
Na zaciatok chcem napisat ze sa nette este len ucim a som uplny novacik.
Mam problem v prvom rade s cache kde pri akejkolvek zmene v sablone musim
mazat cache.
Na to som si zvykol a viem s tym zit.
Ovela viac ma trapi nasledovny problem.
Mam sablonu napojenu na presenter User:preview.
V sablone vykreslujem zoznam uzivatelov z databazy.
Na kazdom riadku mam link na formular, kde mozem zmenit udaje konkretneho
uzivatela.
To vsetko funguje bez problemov.
Zmenim teda udaje urobim update v databaze.
Nasledne chcem z tohoto formularu ist s5 na stranku Preview no tam sa mi
nenacitaju zmenene udaje z db.
Udaje sa nacitaju az po manualnom obnoveni stranky v prehliadaci.
Je nejaka moznost ako vynutit znovunacitanie dat z db vzdy ked pridem na stranku preview?
Editoval lamer (31. 1. 2018 11:12)
- iNviNho
- Člen | 352
Na localhost netreba mazať cache, resp. neviem či nebudem kecať, ale skús nastaviť v bootstrap.php
<?php
$configurator->setDebugMode(TRUE);
?>
Zmaž ešte raz cache a potom vyskúšaj či stále treba mazať cache
šablón.
POZOR: Na produkcií tento príkaz odstrán, alebo nastav len na svoju IP
- lamer
- Člen | 6
setDebugMode(TRUE) mam nastaveny.
boostrap.php mam nasledovny
<?php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Configurator;
//$configurator->setDebugMode('23.75.345.200'); // enable for your remote IP
$configurator->setDebugMode(TRUE);
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTimeZone('Europe/Bratislava');
$configurator->setTempDirectory(__DIR__ . '/../tempCache');
$configurator->createRobotLoader()
->addDirectory(__DIR__)
->register();
//$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
$container = $configurator->createContainer();
return $container;
$storage = new Nette\Caching\Storages\FileStorage('temp');
return $storage;
?>
pokusal som sa odstavit cache aj v neone
- services
- App\Model\UserManager
- App\Forms\FormFactory
- App\Forms\SignInFormFactory
- App\Forms\SignUpFormFactory
router: App\RouterFactory::createRouter
nette.latteFactory:
setup:
- setTempDirectory(NULL)
cacheStorage:
create: Nette\Caching\Storages\DevNullStorage
- lamer
- Člen | 6
Este snad pre upresnenie moja konfiguracia na localhoste je nasledovna:
macOS High Sierra Verzia 10.13.2
MAMP Verzia 4.2
PHP Verzia 7.1.6
Nette 2.4.0
V pohlade ani nikde nepouzivam cache.
Preview.latte výpis
{block content}
{if !$user->loggedIn}
<div class=„card card-inverse card-danger text-center“>
<div class=„card-block“>
<blockquote class=„card-blockquote“>
<h4>Access denied !</h4>
<footer>Only registered user with appropriate rights has the access to
this section.</footer>
</blockquote>
</div>
</div>
{else}
<div><h3>List of clients</h3></div>
<table class=„table table-hover table-sm“>
<thead>
<tr>
<th>Name</th>
<th>Surename</th>
<th>Email</th>
<th>Phone</th>
<th>Role</th>
<th align=„center“>Blocked</th>
<th> </th>
</tr>
</thead>
<tbody>
{foreach $users as $usr}
<tr>
<td>{$usr->name} </td>
<td>{$usr->surename}</td>
<td>{$usr->email}</td>
<td>{$usr->phone}</td>
<td>{$usr->role}</td>
<td align=„center“>{$usr->blocked? ‚Y‘: ‚N‘}</td>
<td><a href=„{link User:edit $usr->id}“><i class=„blue
fa fa-lg fa-pencil“ aria-hidden=„true“ data-toggle=„tooltip“
data-placement=„top“ title=„Edit“></i></a></td>
</tr>
{/foreach}
</tbody>
</table>
{/if}
- lamer
- Člen | 6
Celé to divné správanie malo na svedomí nastavenie php na localhoste.
Používam u seba MAMP a v ňom som mal nastavé php7.1.6. Keď som prepol
PHP na verziu 7.0.20, začalo sa správať všetko úplne korektne. Už netreba
premazávať cache, v šablonách sa zobrazujú správne údaje.
Suma sumárum … problém bol vo verzii PHP nie v nastavení NETTE.
iNviNho napsal(a):
Na localhost netreba mazať cache, resp. neviem či nebudem kecať, ale skús nastaviť v bootstrap.php
<?php $configurator->setDebugMode(TRUE); ?>
Zmaž ešte raz cache a potom vyskúšaj či stále treba mazať cache šablón.
POZOR: Na produkcií tento príkaz odstrán, alebo nastav len na svoju IP