Partial Exists helper (hasPartial)

Hier ein kleiner Helper, mit dem geprüft wird ob ein Partial im Filesystem existiert.

/**
 * Mit diesem Helper kann geprüft werden ob ein Partial existiert
 *
 * @param string $s_partial_name      # Name vom Partial => modul/partial oder einfach nur "partial"
 *
 * @return bool
 */
function hasPartial($s_partial_name)
{
    $o_context = sfContext::getInstance();

    // Prüfen ob das Partial in der Form "module/action" angegeben wurde
    if(FALSE !== strpos($s_partial_name, '/'))
    {
        $a_module_action = explode('/', $s_partial_name);
        $s_module_name = $a_module_action[0];
        $s_partial_name = $a_module_action[1];
    }
    // Nur Partial-Name übergeben
    else
    {
        // Aktuelles Modul bestimmen
        $s_module_name = $o_context->getActionStack()->getLastEntry()->getModuleName();
    }

    // Für das aktuelle Modul muss die Modulkonfiguration ausgelesen werden, um zu
    // bestimmen welche View-Klasse benutzt wird
    $s_config = sfConfig::get('mod_' . strtolower($s_module_name) . '_partial_view_class');
    // Keine Konfiguration gefunden. Standard-Konfiguration laden
    if(empty($s_config))
    {
        require($o_context->getConfigCache()->checkConfig('modules/' . $s_module_name . '/config/module.yml', true));
        $s_config = sfConfig::get('mod_' . strtolower($s_module_name) . '_partial_view_class', 'sf');
    }
    $s_class = $s_config . 'PartialView';
    $o_view = new $s_class($o_context, $s_module_name, $s_partial_name, '');

    $s_partial_name = '_' . $s_partial_name . $o_view->getExtension();

    //Nun wird geprüft ob die Datei existiert
    $b_directory = (boolean) $o_context->getConfiguration()->getTemplateDir($s_module_name, $s_partial_name);

    if(FALSE !== $b_directory)
    {
        return true;
    }

    return false;
}
Dieser Beitrag wurde unter Allgemein, CodeSnippet, Helper, Symfony 1.4, Tips & Tricks abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>