Ergebnis 1 bis 5 von 5

Thema: Einfacher Ajax-Call mit Contao 4.12

  1. #1
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    502

    Standard Einfacher Ajax-Call mit Contao 4.12

    Hallo,

    unter der 4.12 funktioniert meine Erweiterung:
    https://packagist.org/packages/georg...ajax-page-load
    ... leider nicht mehr.

    Ist eine ganz simple Erweiterung die mittels eine Frontend-Moduls eine Seite per Ajax lädt.
    Hat in vorigen Versionen funktioniert, doch nun liefert jeder Ajax-Call einen "500 (Internal Server Error)".

    Hat sich unter 4.12 etwas geändert wie man Ajax-Calls vollzieht?



    So hatte ich das in der Erweiterung von mir angelegt:

    src/Resources/config/routing.yml
    Code:
    ajax_page_load.contoller.getpage:
        path: /pagesearch/{action}
        defaults:
            _controller: GeorgPreissl\ContaoAjaxPageLoad\Controller\AjaxPageLoad::pageSearchAction
            _scope: frontend
            _token_check: false
    src/Controller/AjaxPageLoad.php
    Code:
    <?php
    
    namespace GeorgPreissl\ContaoAjaxPageLoad\Controller;
    
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Component\HttpFoundation\JsonResponse;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    use Contao\ArticleModel;
    use Contao\PageModel;
    
    class AjaxPageLoad extends Controller
    {
     
    	
    	/**
         * @return JsonResponse
         */
        public function pageSearchAction($action = 0, Request $request)
        {
    	
    		$objPages = PageModel::findByIdOrAlias($action );	
            $objArticles = ArticleModel::findPublishedByPidAndColumn($objPages->id, "main");
            // dump($objArticles);
    
            if ($objArticles === null)
            {
                return '';
            }
    
            $html = '';
    
            while ($objArticles->next())
            {
                $objArticle = $objArticles->current();
                $html .= \Controller::getArticle( $objArticle->id, false, false);
            }
    
            return new JsonResponse(array(
    			'data' => $html,
                'status' => 'OK',
                'message' => ['returntest', 'testarray']),
            200);
    		
        }
    }
    ?>

    Ich hab keine Ahnung was nun den 500-Error verursacht.
    Ich wäre euch unendlich dankbar für etwaige Tips was hier falsch läuft

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von thesweetg Beitrag anzeigen
    doch nun liefert jeder Ajax-Call einen "500 (Internal Server Error)".
    Nutze den Debug-Modus und poste den Stack Trace.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Sehr wahrscheinlich liegt es aber daran, dass bspw. dein AjaxPageLoad Controller von Symfony\Bundle\FrameworkBundle\Controller\Controller erbt. Diese Klasse existiert jedoch nicht mehr. Außerdem nutzt du gar nichts von dieser übergeordneten Klasse, daher kannst du das auch einfach entfernen.

    Davon abgesehen solltest du in deiner composer.json alle Komponenten requiren, die du tatsächlich nutzt.
    » sponsor me via GitHub or PayPal or Revolut

  4. #4
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    502

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Sehr wahrscheinlich liegt es aber daran, dass bspw. dein AjaxPageLoad Controller von Symfony\Bundle\FrameworkBundle\Controller\Controller erbt. Diese Klasse existiert jedoch nicht mehr. Außerdem nutzt du gar nichts von dieser übergeordneten Klasse, daher kannst du das auch einfach entfernen.

    Davon abgesehen solltest du in deiner composer.json alle Komponenten requiren, die du tatsächlich nutzt.
    Super, tausend Dank Spooky, das wars
    Was wäre dieses Forum hier ohne dich ...

    Du meinst ich sollte diese Komponenten hier:
    Code:
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Component\HttpFoundation\JsonResponse;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    ... auch in die composer.json bei require reingeben?

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Ja, das wäre symfony/routing und symfony/http-foundation
    » sponsor me via GitHub or PayPal or Revolut

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •