konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

Tworzę własny "propel behavior". Oczywiście klasa dziedziczy po SfPropelBehaviorBase. Klasa jest na razie bardzo prosta, mam tylko zmienną $parameters z domyślnymi opcjami i funkcję:

public function modifyTable() {
foreach ($this->getParameter('my_option') as $option)
// ...
}
}


W schema.yml mam:

_propel_behaviors:
costamable: { my_option: [ xxx ] }


I we wspomnianej klasie zamiast tablicy dostaje string "Array". Jeśli usunę nawiasy [] to getParameter zwróci prawidłową wartość, czyli "xxx". Czy może mi ktoś wyjaśnić gdzie popełniłem błąd? Korzystam z symfony 1.4 i propel 1.5.
I na razie próbuje tylko wygenerować plik SQL poleceniem symfony propel:build --sql. No ale w tabeli nie pojawiają się odpowiednie wiersze bo tablica z parametrami jest niby pusta.Paweł Ryznar edytował(a) ten post dnia 26.07.10 o godzinie 22:09

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

A do pobrania tablicy parametrów nie powinna być użyta funkcja getParameters() zamiast getParameter()? Jak chcesz iterować po wszystkich parametrach behavior-sa to dajesz getParameters() i wtedy już bez problemu powinieneś dostać się do tabily w środku.

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

Nie bardzo, var_dump na wartości zwróconej przez getParameters() daje

array(1) {
["images"]=>
string(5) "Array"
}


Zresztą getParameter po to jest żeby zwracał wybraną wartość.

Ale nie ważne, obie funkcje nie dają oczekiwanych rezultatów :(

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

Mój błąd. Iteracja po parametrach też pewnie zwróci to samo.
Dla mnie to wygląda tak, że parametry w behavior-ach nie mogą być tablicami. Przynajmniej tak to wygląda w dokumentacji. Przykłady są w XML-u, ale pole "parameter" wygląda tak:

<behavior name="timestampable">
<parameter name="create_column" value="created_on" />
<parameter name="update_column" value="updated_on" />
</behavior>

Co raczej wskazuje na to, że to mogą być pojedyńcze wartości a nie tablice. Ale Tablice możesz zawsze zamieścić i potem parserm YML ją wyciągnąć. Hardcore, ale pewnie by się dało ;)Aleksander Wons edytował(a) ten post dnia 27.07.10 o godzinie 10:36

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

No coś czuję że trzeba będzie kombinować ;) Pytałem na IRC, na forum symfony i niestety nie ma odpowiedzi.
W pluginach dla doctrine taka tablica z yaml jest odczytywana.Paweł Ryznar edytował(a) ten post dnia 27.07.10 o godzinie 10:38

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

Dla behavior-ów taką tablicę widziałeś? Mógłbyś podać link?

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

np tutaj http://www.symfony-project.org/plugins/sfDoctrineJCrop...
w schema jest

Person:
actAs:
JCroppable:
images: [ mugshot ]
columns:

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

Wiem, że się czepiam, ale to Doctrine... a to, o czym mówisz to Propel. Raczej niewiele to ma ze sobą wspólnego.

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

Ale pisałem wcześniej :P "W pluginach dla doctrine taka tablica z yaml jest odczytywana."

konto usunięte

Temat: Propel behavior - parametr, string zamiast tablicy

A no tak :) Co nie zmienia faktu, że Propel poza faktem, że też jest to ORM, to z Doctrine nie ma nic wspólnego ;)
Więc trzeba bazować na Propelu a z dokumentacji propela wynika, że parametry do behavior-a nie mogą być tablicą. Musisz podawać każdy parametr osobno, albo jako parametr podać string YAML, który sobie później przeparsujesz.

Następna dyskusja:

dziedziczenie propel/symfony




Wyślij zaproszenie do