IF Abfrage in einem Array möglich?

McAtze

Administrator
Lizenzinhaber
Registriert
30. Apr. 2011
Beiträge
6.102
Punkte
523
XF Version
  1. 2.3 Beta
XF Instanz
Hosting
PHP-Version
8.3.4
MySQL/MariaDB
10.11
Provider/Hoster
Netcup
Hi an die Experten,

ich bin gerade daran mein Infopage ein wenig zu überarbeiten. Nun habe ich ein kleines Problem mit einer IF Abfrage im Array. Bekomme folgenden Error...
Code:
Parse error: syntax error, unexpected 'if' (T_IF), expecting ')' in /kunden/xxxxx_xxxx/xfg/xf1-31/library/McA/InfoPage/Model/Imprint.php on line 30
Und das ist der Code..
PHP:
<?php
class McA_InfoPage_Model_Imprint extends XenForo_Model
{
   
    public function getAvailablePages()
    {
        $options = XenForo_Application::get('options');
        $terms_phrases = $options->mca_infopage_showterms_phrases;
        $cookie_phrases = $options->mca_infopage_showcookies_phrases;
       
        $pages = array(
            'intro' => array(
                        'title' => new XenForo_Phrase('mca_infopage'),
                        'content' => XenForo_Application::get('options')->mca_infopage_intro_content
                        ),
            'aboutus' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showaboutus_title,
                        'content' => XenForo_Application::get('options')->mca_infopage_showaboutus_content
                        ),
            'imprint' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showimprint_title,
                        'content' => XenForo_Application::get('options')->mca_infopage_showimprint_content
                        ),
            'privacy' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showprivacy_title,
                        'content' => XenForo_Application::get('options')->mca_infopage_showprivacy_content
                        ),
            'cookies' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showcookies_title,
                        if ($cookie_phrases)
                            { 'content' => XenForo_Application::get('options')->mca_infopage_showcookies_content }
                        else
                            { 'content' => new XenForo_Phrase('help_cookies_description') }
                        ),
            'terms' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showterms_title,
                        'content' => XenForo_Application::get('options')->mca_infopage_showterms_content
                        ),
            'info-1' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showinfo_1_title,
                        'content' => XenForo_Application::get('options')->mca_infopage_showinfo_1_content
                        ),
            'info-2' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showinfo_2_title,
                        'content' => XenForo_Application::get('options')->mca_infopage_showinfo_2_content
                        )
        );

        return $pages;
    }
}

Kann mir einer weiterhelfen??
 
Ich auch .. :D
 
versuche es mal so

PHP:
	           'cookies' => array(
                        'title' => XenForo_Application::get('options')->mca_infopage_showcookies_title,
                        'content' => (($cookie_phrases) ? XenForo_Application::get('options')->mca_infopage_showcookies_content : new XenForo_Phrase('help_cookies_description'))
                        ),
 
Funktioniert super.
Kannst du mir die Zeile kurz erklären damit ich verstehe was ich da mache?
 
ist eine kurze IF & ELSE Abfrage nur ist die Syntax etwas anders, zutreffendes nach dem "?" und das else ist nach dem ":"
das jeweilige Ergebnis wird dann zurückgegeben
hab das noch zusätzlich in eine klammer gepackt, könnte aber auch ohne diese Umschließung geben
du kannst das auch noch weiter verschachteln

wie du aber siehst kann man da nicht mehr code ausführen und den Key kannst du auch nicht so einfach ändern
 
Das bringt mich schon weiter .. :nerd:
 
Ein IF kann nicht in einem Zuweisungsblock stehen, es ist ein Block Element.

Eine weitere und für Nicht-Profis lesbare alternative ist, das vorher in einem IF Block in eine Variable zu schreiben. Der Ternäre Operator ( ? : ) ist ein seltenes konstrukt, aber ich mag es auch und nutze Ihn gerne.

Er ist aber sehr Wartungsunfreundlich, da teilweise nur schwer lesbar.
 
Zurück
Oben