• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JS in PHP generieren

No3x

Mitglied
Hallo,

ich habe eher ein kosmetisches Problem mit js einem php Dokument zu generieren. Es sieht einfach immer ziemlich schrecklich aus so etwas zu machen und der js Code wird ziemlich unleserlich.
Beispiel:
PHP:
<?php
public static function disable_fields() {
    $disabled_fields = array(
        // fieldid => changeable
        'email' => true,
        'first_name' => true,
        'last_name' => true
    );
            
    $output = '<script type="text/javascript">jQuery(document).ready( function($) {';
    foreach ($disabled_fields as $field => $changeable ) {
        $output .= $field . ' = $("#'. $field . '");';
        $output .= 'if ( '. $field .'.length ) {';
        $output .= '$('. $field .').attr("disabled", "disabled");';
        if( $changeable === true ) {
            $output .= '$('. $field .').after(" <span class=\"description\">Inform us if you wish changes.</span>");';
        }
        $output .=  '}';
    }
    $output .=  '});</script>';
    echo $output;
}   
?>

Sowohl der php Teil sieht chaotisch aus als auch der generierte Code auf der Website. Jetzt kann ich natürlich Steuerzeichen in den Code packen damit es generiert OK aussieht, aber das macht den code wiederum noch schlimmer.

Kennt jemand eine Methode/Pattern/Best Practice dies zu verbessern?
 
Werbung:
Ich erachte das jetzt eigentlich nicht als wichtig, da es um das Prinzip geht wie man eleganter serverseitig js generiert. Ob der Code nun bestimmte Textfelder deaktiviert und eine Begründung dahinter schreibt oder AJAX für eine Foto Galerie erzeugt.. Das Problem ist das gleiche - es sieht einfach schrecklich aus. Und offensichtlich kannst du den Code auch nicht schnell lesen und verstehen.
 
Werbung:
Du kannst auf jeden Fall schon mal dafür sorgen, dass im entstehenden JavaScript-Code Zeilenumbrüche eingebaut werden, damit wird das schon mal leserlicher.

Wenn man im PHP-Code die ein oder andere Leerzeile richtig plaziert, wird es auch leserlicher und der ein oder andere Kommentar wäre auch nicht schlecht. Ansonsten sieht das nun mal dämlich aus, wenn man mit PHP JavaScript-Code generiert.
 
Ich erachte das jetzt eigentlich nicht als wichtig, da es um das Prinzip geht wie man eleganter serverseitig js generiert. Ob der Code nun bestimmte Textfelder deaktiviert und eine Begründung dahinter schreibt oder AJAX für eine Foto Galerie erzeugt.. Das Problem ist das gleiche - es sieht einfach schrecklich aus. Und offensichtlich kannst du den Code auch nicht schnell lesen und verstehen.

Auch wenn es sicherlich möglich ist: Man generiert mit PHP keinen JS-Code.
Und wenn doch mal, dann ist es egal wie der dann aussieht.

Ansonsten hast du das ganz einfach falsch konzipiert. Statt per PHP dynamische Javascripts schreiben zu wollen, solltest du lieber ein dynamisches Javascript schreiben.
 
Werbung:
Das ist jetzt auch nicht unbedingt ein Meisterwerk, aber schon mal besser:
PHP:
<?php
public static function disable_fields()
{
    $disabled_fields = array(// fieldid => changeable
                             'email' => true,
                             'first_name' => true,
                             'last_name' => true);
          
    $output = '<script type="text/javascript">
               jQuery(document).ready( function($) {';
   
    foreach ($disabled_fields as $field => $changeable )
    {
        $output .= $field . ' = $("#'. $field . '");
                   if ( ' . $field . '.length ) {
                   $(' . $field . ').attr("disabled", "disabled");';
                    
        if( $changeable === true )
            $output .= '$('. $field .').after(" <span class=\"description\">Inform us if you wish changes.</span>");';
       
        $output .=  '}';
    }
   
    $output .=  '});
                 </script>';
                
    echo $output;
} 
?>
 
So wie ich das sehe kannst du das ganze doch auch einfach ohne PHP erzielen.
Du gibst den Elementen die du ausgibst einfach allen eine Klasse wie z.b. "mach-was-mit-mir" und dann baust du ein jquery check und prüfst einfach alle $('.mach-was-mit-mir') ob die disabled sind.
Funktioniert natürlich nur wenn $changeable immer true ist, aber du könntest den elementen ja auch eine "changeable" klasse mitgeben und jeden eintrag von $('.mach-was-mit-mir') prüfen ob er die entsprechende klasse hat.

Würde dir bestimmt einiges an arbeit erspaaren. :)
 
Zurück
Oben