Closed TobiasKrais closed 4 years ago
Der PHP Code ist falsch oder hier ein Schreibfehler?
Oops. Hier der Originalcode: https://github.com/TobiasKrais/d2u_machinery/blob/dae7fd39d1eba0bd0972577d2931c8aa769a63a5/lib/machine.php#L2061
Wo müsste ich ansetzen um diesen Bug zu lösen? Ich habe leider nicht den geringsten Schimmer, obwohl ich das Addon ja schon ein wenig kenne.
Hängst du dich an diesem EP? https://github.com/tbaddade/redaxo_url/blob/master/lib/Url/Profile.php#L379
Ja, auf dieser Installation ist das so.
Dann ist dein Rückgabewert keine Instanz von Url\Url
.
Nebenbei würde ich hier https://github.com/TobiasKrais/d2u_machinery/blob/dae7fd39d1eba0bd0972577d2931c8aa769a63a5/lib/machine.php#L2061
auf die Parameter article_id
und clang_id
verzichten. Das war noch in der 1er Version so.
Ja, ich weiß. Das hast du mir schon mal geschrieben. Mein Addon funktioniert mit Version 1 und 2 des Addons. Solange die 2er noch nicht final ist lass ich es noch drin. Danke für den Hinweis!
Dann ist dein Rückgabewert keine Instanz von Url\Url.
Konnte dir das weiterhelfen?
Nicht wirklich. Das Problem ist weitreichender. Angenommen ich habe kein url Addon installiert und möchte per rex_getUrl()
einen Parameter an die URL dran hängen, also eine URL wie diese: /blabla/?version=3, dann sieht mein Code so aus: rex_getUrl($id_von_artikel_blabla, $clang_id, ['version' => 3], '&')
. Wenn ich nun das url Addon installiert habe, bekomme ich mit dem gleichen Code einen fatal error. Und das sogar dann, wenn der Parameter in keinem Namespace des url Addons vorhanden ist. Sollte nicht wenigstens - wie die Methode es eigentlich vorsieht - der Parameter an die URL angehängt werden. Was denkst du?
Ich habe dich bisher so verstanden:
Du hängst dich an diesen URL_PRE_SAVE
und irgendwann wird dadurch diese Zeile angestoßen. Die Rückgabe des EPs muss aber eben eine Instanz von Url
sein was bei dir nicht der Fall ist.
Angenommen ich habe kein url Addon installiert
Dann dürfte die Zeile eigentlich nicht erreichbar sein, da der EP URL_PRE_SAVE
nicht vorhanden ist wo dich normalerweise andockst.
Ich weiß nicht wirklich was ich jetzt hier machen soll. Für mich müsste das für mein Verständnis in deinem AddOn geklärt werden.
Ah, ich verstehe. Das stimmt. Der Fehler wird dann behoben.
Es handelt sich um dieses return Statement: https://github.com/TobiasKrais/d2u_machinery/blob/dae7fd39d1eba0bd0972577d2931c8aa769a63a5/boot.php#L214. Was sollte ich zurückgeben? Wenn ich eine URL zurück gebe wird ein Duplikat des Eintrags, bzw. eine zweite URL für die gleichen IDs erstellt.
Du müsstest das Objekt zurückgeben, welches dem EP übergeben wurde. Doppelt sollte nichts in der DB landen, oder nimmst du selbst Einträge vor?
Ja, das löst das Problem. Früher hat es nur auf diese Art und Weise funktioniert um Duplikate zu vermeiden. Offensichtlich hast du im Addon etwas verbesserst. Danke!
$this->url = rex_getUrl('', $clang_id, ['machine_id' => $machine_id], "&");
erzeugt folgenden Fehler wenn die$clang_id
oder$machine_id
nicht im Datensatz vorhanden ist:rex_exception: Your returned Url is not an instance of Url\Url File: redaxo/src/addons/url/lib/Url/Profile.php Line: 382
Stacktrace
| Function | File | Line | | -------------------------------------------- | ---------------------------------------------------------- | -------- | | Url\Profile->createAndSaveUrls | redaxo/src/addons/url/lib/Url/Profile.php | 259 | | Url\Profile->buildUrlsByDatasetId | redaxo/src/addons/url/lib/Url/UrlManager.php | 356 | | Url\UrlManager::getRewriteUrl | redaxo/src/addons/url/boot.php | 78 | | rex_package->{closure} | redaxo/src/core/lib/extension.php | 45 | | rex_extension::registerPoint | redaxo/src/addons/structure/functions/function_rex_url.php | 39 | | rex_getUrl | redaxo/src/addons/d2u_machinery/lib/machine.php | 2062 | | Machine->getURL | redaxo/src/addons/d2u_machinery/lib/machine.php | 953 | | Machine->delete | redaxo/src/addons/d2u_machinery/pages/machine.php | 241 | | include | redaxo/src/core/lib/packages/package.php | 228 | | rex_package->includeFile | redaxo/src/core/lib/be/controller.php | 474 | | rex_be_controller::includePath | redaxo/src/core/lib/be/controller.php | 430 | | rex_be_controller::includeCurrentPageSubPath | redaxo/src/addons/d2u_machinery/pages/index.php | 8 | | include | redaxo/src/core/lib/packages/package.php | 228 | | rex_package->includeFile | redaxo/src/core/lib/be/controller.php | 474 | | rex_be_controller::includePath | redaxo/src/core/lib/be/controller.php | 413 | | rex_be_controller::includeCurrentPage | redaxo/src/core/backend.php | 215 | | require | redaxo/src/core/boot.php | 135 | | require | redaxo/index.php | 9 |System report (REDAXO 5.8.1, PHP 7.3.11-nmm1)
| REDAXO | | | ------------: | :--------- | | Version | 5.8.1 | | PHP | | | ------------: | :---------- | | Version | 7.3.11-nmm1 | | OPcache | no | | Xdebug | no | | Database | | | ------------: | :--------------------------- | | Version | 5.6.44-nmm1-log | | Character set | utf8mb4 (utf8mb4_general_ci) | | Server | | | ------------: | :--------- | | OS | Linux | | SAPI | fpm-fcgi | | Webserver | Apache | | Request | | | ------------: | :----------- | | Browser | Firefox/72.0 | | Protocol | HTTP/1.1 | | HTTPS | yes | | Packages | | | -----------------------------------------------: | :---------- | | accessdenied | 1.0.6 | | be_style | 2.8.1 | | be_style/customizer | 2.8.0 | | be_style/redaxo | 2.8.1 | | bloecks | 2.1.1 | | bloecks/status | 2.1.1 | | cookie_consent | 3.0.0-beta3 | | cronjob | 2.5.0 | | d2u_address | 1.1.2 | | d2u_helper | 1.6.1 | | d2u_helper/translation_helper | | | d2u_history | 1.0.0 | | d2u_jobs | 1.1.0 | | d2u_jobs/hr4you_import | 1.1.0 | | d2u_linkbox | 1.2.3 | | d2u_machinery | 1.3.2 | | d2u_machinery/industry_sectors | 1.3.2 | | d2u_machinery/machine_features_extension | 1.3.2 | | d2u_machinery/machine_steel_processing_extension | 1.3.2 | | d2u_machinery/used_machines | 1.3.2 | | d2u_news | 1.1.2 | | d2u_news/fairs | 1.1.2 | | d2u_partner | 1.0 | | d2u_references | 1.0.7 | | d2u_staff | 1.0.3 | | d2u_videos | 1.0.8 | | emailobfuscator | 3.0.0 | | install | 2.5.0 | | media_manager | 2.7.0 | | media_manager_autorewrite | 1.1.0 | | mediapool | 2.6.1 | | metainfo | 2.5.1 | | multinewsletter | 3.2.7 | | phpmailer | 2.6.0 | | sprog | 1.2.0 | | structure | 2.8.1 | | structure/content | 2.8.1 | | tinymce4 | 1.2.1 | | uploader | 2.0.5 | | url | 2.0.0-beta3 | | users | 2.5.3 | | ycom | 4.0 | | ycom/auth | 4.0 | | ycom/docs | 4.0 | | ycom/group | 4.0 | | ycom/media_auth | 4.0 | | yform | 3.3.1 | | yform/docs | 3.3.1 | | yform/email | 3.3.1 | | yform/manager | 3.3.1 | | yrewrite | 2.6 | | yrewrite_scheme | 3.1.1 |