Code snippet: ekstrakcja nazwy pola z inputów cakePHP przy pomocy jQuery

Natknąłem się na następujący problem:

Mam formularz wyszukiwania, który wygląda różnie w różnych widokach, jednak na jego podstawie jest budowany url tak samo dla każdego widoku. Na przykład:

// some view
echo $form->create("Model");
echo $form->input("field1");
echo $form->input("field2");
echo $form->input("field3");
echo $form->end("submit");

W zdarzeniu onsubmit chcę wygenerować taki url:
“/field1:value1/field2:value2/field3:value3″
Gdzie valueX to oczywiście wartość danego pola.

Pobranie interesujących nas pól:

$("form input[type!=submit][name!=_method], form select");

Tak można wytargać nazwę pola z “name” inputów (zakładając, że w zmiennej string mamy cały name):

// string.substr(
//   string.indexOf("[", string.indexOf("]"))
// ).slice(1, -1);
// nowa, lepsza, prostsza wersja:
string.substr(
   string.lastIndexOf("[")
).slice(1, -1)


Całość tworzenia linków:

var params = "";

$("form input[type!=submit][name!=_method], form select").each(
   function(index,element) {
      params +=
         element.name.substr(
            element.name.lastIndexOf("[")
         ).slice(1, -1)+
         ":"+
         element.value+
         "/";
   }
);

Przydaje się, jeśli pracujesz z parametrami “named”

Często podmieniasz fragmenty stringów (cakePHP)?

Jeśli tak – mam dla Ciebie małą podpowiedź String::insert()

Przydatne, jeśli potrzebujesz zdefiniowany łańcuch w którym podmieniasz tylko niektóre fragmenty:

$wiadomosc = ":name ma :pet";
echo String::insert(
   $wiadomosc,
   array(
      "name"=>"Ala",
      "pet" => "Kota"
   )
); // Ala ma Kota

Z pewnością uprości to Twój kod, jeśli znikną z niego wszystkie str_replace itp.

Polecam też resztę klasy String i innych w cake/lib – często okazują się przydatne.

cakephp comments

Mam wielu gości, którzy wpadają na tego bloga przez frazę “cakephp comments”. Niestety lądują tu przez przypadek – piszę o cakephp i na końcu każdego postu są komentarze ;) Nic interesującego i potwierdza to bounce rate powyżej 99% :D

Jednak mimo, że osobiście nie mam nic do zaoferowania w tej kwestii – mogę pozostawić drogowskaz dla wszystkich poszukujących:
Plugin komentarzy cakePHP

Jak już podepniecie ten mechanizm w swoich systemach – wpadnijcie znów do mnie i poczytajcie o tym jak stworzyć fajny widok zbiorczy web 2.0 i poznać przy okazji możliwości jQuery.

Powodzenia!