Contao\ArticleModel::findByIdOrAliasAndPid PHP Метод

findByIdOrAliasAndPid() публичный статический Метод

Find an article by its ID or alias and its page
public static findByIdOrAliasAndPid ( mixed $varId, integer $intPid, array $arrOptions = [] ) : ArticleModel | null
$varId mixed The numeric ID or alias name
$intPid integer The page ID
$arrOptions array An optional options array
Результат ArticleModel | null The model or null if there is no article
    public static function findByIdOrAliasAndPid($varId, $intPid, array $arrOptions = array())
    {
        $t = static::$strTable;
        $arrColumns = array("({$t}.id=? OR {$t}.alias=?)");
        $arrValues = array(is_numeric($varId) ? $varId : 0, $varId);
        if ($intPid) {
            $arrColumns[] = "{$t}.pid=?";
            $arrValues[] = $intPid;
        }
        return static::findOneBy($arrColumns, $arrValues, $arrOptions);
    }

Usage Example

 /**
  * Translate URL parameters for articles.
  *
  * @param ChangelanguageNavigationEvent $event
  */
 public function onChangelanguageNavigation(ChangelanguageNavigationEvent $event)
 {
     // Try to find matching article
     if ($event->getNavigationItem()->isCurrentPage() || !$event->getUrlParameterBag()->hasUrlAttribute('articles')) {
         return;
     }
     /** @var PageModel $objPage */
     global $objPage;
     $parameterBag = $event->getUrlParameterBag();
     $currentArticle = ArticleModel::findByIdOrAliasAndPid($parameterBag->getUrlAttribute('articles'), $objPage->id);
     if (null === $currentArticle) {
         return;
     }
     $pageFinder = new PageFinder();
     $targetRoot = $event->getNavigationItem()->getRootPage();
     $masterRoot = $pageFinder->findMasterRootForPage($targetRoot);
     $targetArticle = $this->findTargetArticle($currentArticle, $targetRoot->id, $objPage->rootId === $masterRoot->id, null !== $masterRoot && $targetRoot->id === $masterRoot->id);
     if (null === $targetArticle) {
         $parameterBag->removeUrlAttribute('articles');
     } else {
         $parameterBag->setUrlAttribute('articles', $targetArticle->alias);
     }
 }
All Usage Examples Of Contao\ArticleModel::findByIdOrAliasAndPid