Wypowiedzi
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Jedźmy razem samochodem
-
zrob tak:
<input type="hidden" name="nazwa" value="0">
<input type="checkbox" name="nazwa" value="1">
i teraz zaznaczenie spowoduje wyslanie pola checkbox z wartoscia 1 zas niezaznaczenie jego bedzie 0 -
nie chce mi sie tlumaczyc calej struktury jakiej uzywam ale wolal bym placeholdera uzyc.
-
Witam serdecznie,
w projekcie mam uzyty placeholder - powiedzmy że identycznie jak na http://framework.zend.com/manual/en/learning.view.plac...
czyli sidebar w odzielnym pliku wywolywany w preDispatch w kontrolerze jakims.
Mój problem polega na wstrzyknieciu dodatkowych danych do tego placeholdera po przez kontroller lub templatke np.
$this->placeholder('sidebar')->nowe_pole = 'test';
i uzycie w placeholderze czegos takiego spowodowalo by wypisanie tekstu "test" w odpowiednim miejscu.
Nie mniej jednak powyzszy zapis robi zwykły append (dodaje na koniec moj tekst) a ja potrzebuje wywolac w odpowiednim miejscu. Ma ktoś pomysl jak tego dokonac ? -
oki problem rozwiązany - w routingu trzeba było zdeklarować parametr scheme.
-
Witam serdecznie,
mam takie pytanie - czy jest możliwość zdefiniowania w helperze url z jakim prefixem ma budować urla ? Pytam się gdyż obecnie będąc na stronie np.
https://secure.strona.pl/
i link budowany tak: <?php echo $this->url(array(), 'www-about', true); ?>
wyświetla sie w ten sposób: https://www.strona.pl/o-nas.html a chciałbym by zamiast https było http.
Macie jakiś pomysł? -
Lekko odkopie temat, gdyż może się komuś przydać.
Jeśli w kodzie HTML, znajdzie się taki kod:
<img src="" alt="cos" />
to Zend_Validate_Identical będzie pokazywał wspomniany błąd. -
okej, jakieś pierwsze kroki uczyniłem w kierunku zrealizowania mojego pomysłu i wygląda mniej więcej to tak:
Nowy view helper:
class Zend_View_Helper_Translator extends Zend_View_Helper_Translate{
protected static $_translateIds = array();
public function translator($translateId){
array_push(self::$_translateIds, $translateId);
return $this->translate($translateId);
}
public static function getTranslateIds(){
return self::$_translateIds;
}
}
Plugin:
class Core_Controller_Plugin_Translate extends Zend_Controller_Plugin_Abstract{
private $_translate = null;
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
$options = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getApplication()->getOptions();
$options = $options['resources'];
$locale = new Zend_Locale(isset($_COOKIE['lang']) ? $_COOKIE['lang'] : $options['locale']['default']);
$this->_translate = new Zend_Translate(array('adapter' => 'array', 'locale' => $locale));
if ($this->_translate->isAvailable($locale)){
$this->_translate->setLocale($locale);
}
Zend_Registry::set('Zend_Translate', $this->_translate);
Zend_Registry::set('Zend_Locale', $locale);
Zend_Registry::set('Zend_Currency', new Zend_Currency($locale));
}
public function dispatchLoopShutdown(){
$translationIds = Zend_View_Helper_Translator::getTranslateIds();
if (!empty($translationIds)){
$translate = new Model_Translation();
$translations = $translate->findAllByNames($translationIds);
$this->_translate->addTranslation($translations, 'pl_PL');
Zend_Registry::set('Zend_Translate', $this->_translate);
}
}
}
Widok:
<?php echo $this->translator('tmp1'); ?>
<?php echo $this->translator('tmp2'); ?>
<?php echo $this->translator('tmp3'); ?>
I teraz tak, z widoku wyciągam wszystkie klucze - to jest okej, następnie w bazie odnajduje tłumaczenia i daje do Zend_Translate. Natomiast nie wiem jak zwrócić spowrotem do widoku prztłumaczony tekst.
Masz może na to pomysł ? -
Zend_Form posiada metodę setTranslator, do której możesz przekazać własny adapter.
oo tego nie wiedziałem :) no to jest jakiś punkt zaczepienia. W razie czego będę pisał :)
Pozdrawiam -
Rozumiem że chodzi o to aby wyciągnąć już nie helper translate ale mój własny - problem pojawia się wtedy przy formularzach - domyślnie wszystkie formularze działaja z zend translate() więc wolałbym nie tworzyć nowego helpera. Jakiś pomysł na to ? Piotr Krajewski edytował(a) ten post dnia 21.05.11 o godzinie 08:41
-
rozwiazanie ciekawe, nie menij jednak pozostaje problem pobrania wszystkich translacji kluczy z danego widoku. Jeśli będę to potrafił to prawdopodobnie skorzystam z twojego rozwiazania.
-
może być do array'a lub obiektu - bez różnicy - cały zabieg miałby działać na zasadzie:
1. wchodzę na stronę /controller/action gdzie w widoku użyty jest wielokrotnie view helper translate np.
$this->translate('translate_title');
$this->translate('translate_content');
itp.
2. jakiś pluginik - rozszerzenie view helpera translate znajduje mi wszystkie tlumaczenia na danej stronie
3. przeszukuje baze pod katem tych kluczy - w tym wypadku: translate_title i translate_content
4. znalezione translacje podmienia na tlumaczenia.
Tak to by z grubsza mialo dzialać. -
Witam serdecznie,
od paru dni zmagam się z pewnym problemem związanym z Zend_Translate, Bazą Danych i Zend_View. Mianowicie - chciałbym stworzyć tłumaczenia oparte o Zend_Translate i bazę danych (tu nie ma nic trudnego), problem mój polega na tym iż chciałbym przed wyrenderowaniem widoku pobrać z niego wszystkie klucze, które są osadzone w helperze $this->translate(), na ich podstawie wyciągnąć tłumaczenia i dopiero wyrenderować widok z już przetłumaczonymi tekstami.
Moje pytanko brzmi: czy jest coś takiego osiągalne w Zend_View?
Dodam iż w smartym zrealizowanie tego jest możliwe, nie wiem natomiast jak ugryźć Zend_View.
Ma ktoś pomysły?
Pozdrawiam -
Dziękuje wszystkim za pomoc oraz dyskusję dużo mi pomógl ten wątek.
Pozdrawiam -
ooo to mi całkowicie rozwiąże problem :)
Dzięki za pomysł.
PS. a co jeśli formularze nie mogą być w subformach (nie mój przypadek ale być moze się spotkam z czymś takim) np. gdy jest form dodawania do newslettera, logowania i jakiś jeszcze formularz. I prawdopodobnie będą musiały być wywoływane przez jedną akcje i tam tez walidowane. Masz na to jakiś pomysł ? Piotr Krajewski edytował(a) ten post dnia 17.04.11 o godzinie 21:11 -
Cześć wszystkim,
tworząc sobie formularze do strony natknąłem się na duży problem którego nie potrafię rozwiązać w sposób "poprawny". Otóż chciałbym zamieścić na jednej stronie np. /account/settings (kontroler/akcja) dwa formularze:
- do zmiany danych użytkownika
- do zmiany hasła
Problem w tym, że jeśli zamieszczam je w sposób standardowy tzn:
public function settingsAction(){
$form = new Form_Account();
$form->setAction($this->view->url());
$form->populate($this->user);
if ($this->_request->isPost()){
if ($form->isValid($this->_request->getPost())){
$data = $form->getValues();
...
...
}
}
$this->view->settingsForm = $form;
$form = new Form_Password();
$form->setAction($this->view->url());
if ($this->_request->isPost()){
if ($form->isValid($this->_request->getPost())){
$data = $form->getValues();
...
...
}
}
$this->view->passwordForm = $form;
}
to wysyłając jeden formularz walidują mi się obydwa i błędy wyświetlają się w obydwu.
Moje pytanie jest następujące - jak można problem rozwiązać?
Dodam że probowałem rozdzielić akcje by settingsy były w jednej a zmiana hasła w drugiej akcji i używałem ActionStacka lecz po wysłaniu formularza przenosiło mnie na stronę danej akcji np. account/change-password czego bym nie chcial.
Jakieś propozycje? -
Witam wszystkich,
ostatnio chciałem napisać kilka testów dla swojej aplikacji zendowskiej i od razu natrafiłem na kilka problemów, a mianowicie:
Dostaje tego typu błędy:
StaticsControllerTest::testContactAction
Failed asserting last controller used <"error"> was "Statics"
/var/www/html/morendo/library/Zend/Test/PHPUnit/ControllerTestCase.php:1000
/var/www/html/morendo/tests/application/controllers/StaticsControllerTest.php:10
mimo że w moim przekonaniu mam wszystko dobrze tzn:
class StaticsControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
public function setUp()
{
$this->bootstrap = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
parent::setUp();
}
public function testContactAction()
{
$this->dispatch($this->url(array(), 'www-contact', true));
$this->assertController('Statics');
$this->assertAction('contact');
$this->assertQueryCount('form#contact', 1);
}
}
i routing:
routes.www.type = "Zend_Controller_Router_Route_Hostname"
routes.www.route = MAIN_URL
routes.www.chains.contact.type = "Zend_Controller_Router_Route_Static"
routes.www.chains.contact.route = "/kontakt.html"
routes.www.chains.contact.defaults.controller = "Statics"
routes.www.chains.contact.defaults.action = "contact"
i podejrzewam, że tu jest problem - routing jest niestandardowy.
Ma ktoś podobny problem i rozwiązanie? -
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Jedźmy razem samochodem
-
Ha! faktycznie getValues() miałem w innych formularzach tu dałem getPost - chyba ze zmęczenia :) Dzieki za pomoc!
Pozdrawiam -
no własnie nie do końca tak chce bo np. niektóre pola są wymagane ale musza być ignorowane np. csrf token. on musi być ale w parametrach ma dalej nie iść