Szükséges / Required

vikicica22 képe

Sziasztok!
Hogyan tudok egy adatott kötelező kitöltésre (required) bírni a template.php-ben?

function phptemplate_adatok_node_form($form){
…..
$output .= drupal_render($form['field_cim']); --> ezt szeretném.

cck-val vittem fel ezt, tudom ott is be lehet jelölni, hogy szükséges a kitöltése vagy nem de most én a template.php szeretném neki megadni ezt az dolgot.
Segítségeteket előre is köszönöm.

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
fox mulder képe

Van egy #required property a Form API-ban (default: FALSE), ami minden elemhez megadható. Nem ez kell neked?

0
0

Fox Mulder

vikicica22 képe

Az a baj, hogy nem tudom mit és hova kell írni :(:(
Gondoltam, hogy ezt kell "required" de hova és hogyan :(:(
Ez a bajom. Ebben kérem a segítségeteket.

0
0
aboros képe

és írasd ki az egész form tömböt, akkor meglátod, hova kerül az.

0
0

-
clear: both;

sgabe képe

miért a template.php fájlodban szeretnéd ezt megadni...?

0
0
vikicica22 képe

Mert ott tudom mozgatni az elemeket + egyéb más dolgokat is megvalósítani.

0
0
sgabe képe

hogy pontosan miket valósítasz meg... Ha a mozgatás alatt a mezők sorrendjét érted, azt súlyozással a mező beállításainál is megadhatod, ahogy a kötelező kitöltést is.

0
0
aboros képe

mit nem lehet ezen érteni? ;)

0
0

-
clear: both;

sgabe képe

minek ott akarja? ;)) én nem látom a dologban a rációt, de sebaj... mindig is tudtam, hogy majd hüjén halok meg :)

0
0
vikicica22 képe

Na, ez kiírta a dolgokat

 $output.= '<pre>'. print_r($form,true) .'</pre>';

látom is hogy a pl. az email címnél ott van

[#type] => textfield
[#title] => E-mail cím
[#default_value] =>
[#required] => 1
[#maxlength] => 255
[#size] => 60
[#description] =>
[#post] => Array

de hogyan tudom ezt megvalósítani az enyémben

$output .= drupal_render($form['field_cim']['required']); --> így nem működik.

0
0
sgabe képe

$form['field_cim']['#required'] = TRUE;
0
0
vikicica22 képe

most volt időm kipróbálni és hiba van benne

$output .= drupal_render($form['field_cim']['#required']= TRUE);

warning: uasort() [function.uasort]: The argument should be an array in C:\htdocs\drupal.hu\includes\common.inc on line 2145.
warning: Cannot use a scalar value as an array in C:\htdocs\drupal.hu\includes\common.inc on line 2176.
warning: Cannot use a scalar value as an array in C:\htdocs\drupal.hu\includes\common.inc on line 2187.

ui: kipróbáltam több féleképpen és úgy sem működött.

0
0
sgabe képe

mert nem a drupal_render(); függvénybe kéne tenni...

<?php
$form['field_cim']['#required']= TRUE;
$output .= drupal_render($form['field_cim']); 
?>
0
0
vikicica22 képe

de ezt a template.php - szeretném bele tenni, és ott meg nem jó valamiért

function phptemplate_adatlap_node_form($form){
 
  $output .= drupal_render($form['field_cim']);
  $output .= drupal_render($form);
 
   return $output;
}
0
0
sgabe képe

function phptemplate_adatlap_node_form($form) {
 
  $form['field_cim']['#required']= TRUE;
 
  $output .= drupal_render($form['field_cim']);
  $output .= drupal_render($form);
 
  return $output;
}
0
0
Sweetchuck képe

Ezt az egész megközelítést alaposan tesztelni kell. Sgabe-nek nem véletlenül vannak aggályai ezzel kapcsolatban. Érzésem szerint egy beküldött űrlap ellenőrzése(validálása) előbb történik, mint ahogy az űrlap újra megjelenítése. Ha ez igaz akkor ebben a megoldásban az ellenőrzés után macerálod a #required értéket.
Szerintem jobb lenne a CCK admin felületén bekapcsolni a „szükséges” értéket, vagy kisebb modullal hook_form_alter() vagy hook_nodeapi() $op = validate ellenőrizni amit kell.

0
0
zila képe

Ezt szerintem hook_form_alter-rel lehet megoldani, de az modulba kell rakni, lévén egy hook...

0
0

--
IE doesn't support internet

vikicica22 képe

sgabe: igen én is így csináltam de nem működik :(

Sweetchack: igen csak ha bepipálom és létrehozok még egy adatlapot és ott ha megint a cím-et adom be neki akkor az is aktív lesz ugye csak akkor nem ha létrehozok egy másik cím-et (field_cim_0). Ezért akartam volna elérni azt, hogy ne kelljen másik „adathalmazt” létre hozni, hanem mindent egybe tegyen, csak lehessen az egyiken kötelezővé tenni a másikon meg szabadon hagyni.

zila és Sweetchack: Sajnos modult nem tudok írni, rá mert ahhoz nem értek még.
Köszönöm mindenkinek az eddigi segítséget.

0
0
sgabe képe

ha bepipálom és létrehozok még egy adatlapot és ott ha megint a cím-et adom be neki akkor az is aktív lesz ugye csak akkor nem ha létrehozok egy másik cím-et (field_cim_0).

Ha létrehozol egy új tartalom típust, amihez hozzáadod a meglévő cím meződet, a tartalom típus szerkesztésénél, a mezők kezelése fülön, a cím meződ beállításainál megadhatod, hogy szükséges legyen-e a mező kitöltése. Nem lesz semmilyen hatással a másik tartalom típusodra.

0
0
aboros képe

amihez hozzáadod a meglévő cím meződet, a tartalom típus szerkesztésénél, a mezők kezelése fülön, a cím meződ beállításainál megadhatod, hogy szükséges legyen-e a mező kitöltése. Nem lesz semmilyen hatással a másik tartalom típusodra.

az, hogy kötelező e vagy sem, "globális" beállítása egy mezőnek. ha egy kötelező mezőt újrahasznosítasz egy másik típusban, ott is kötelezőnek kell majd lennie, vagy ha mégis kiveszed a kötelező beállítást, akkor sehol nem lesz kötelező, ott sem ahol eddig az volt. (azért van az egy "global settings" mezőcsoportban;)

az eredeti témához pedig:
ennek, ami itt a feladat lenne, semmi köze a sminkréteghez, ahogy erre már többen céloztak. nem ott kell megcsinálni, talán azért sem megy. saját modulod hook_form_alter hurkában _kell_ az ilyet intézned, ez van. egyébként egy saját ilyen modult sem nehezebb írni mint egy sminkfunkciót, példamodulok az api.drupal.org webhelyen, _example írd a keresőbe.

0
0

-
clear: both;

sgabe képe

my bad, de mint feljebb írtam már, ezt egyébként sem így kéne megoldani

0
0
Sweetchuck képe

Szerintem meg úgy csinálta meg, hogy 1 adatlapon több címet is meg lehet adni, de egyet mindenképpen kötelező de a többi nem. 2 adatlappal lehetne csak megcsinálni, az első kötelező, a második (multiple és ) nem kötelező. Csak ezért nem akart 2 adatlapot.

0
0