Aber das kann ja auch gewünscht seinSo muss ich nicht schauen, ob es den Teil der Url so schon gibt und diesen dann mit schleifen
[Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
APF-Version
- Entwicklung: 2.0
- Produktiv: 1.15
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
In meinem Fall jedoch nicht


Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Die Links sehen nun wie folgt aus:
Code: Alles auswählen
http://server/apf1/index.php?index=index&delete=69

Vermutlich ist der URL-Aufbau auch falsch. Ich vermute der müsste eher wie folgt aussehen:
Code: Alles auswählen
http://server/apf1/index.php?page=delete&id=69

Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Ich habe den Mapper um eine Methode ergänzt, die eine Nachricht löschen kann:
Code: Alles auswählen
public function deleteMessage($id){
// Datenbankverbindung
$SQL = &$this->getConnection();
// Query
$delete = 'DELETE FROM messages WHERE `id` = \'' . $SQL->escapeValue($id) . '\'';
// Nachricht löschen
$result = $SQL->executeTextStatement($delete);
}
Code: Alles auswählen
http://server/apf1/index.php?action=delete&id=1
Code: Alles auswählen
<div id="content">
<core:importdesign
namespace="messenger::pres::templates"
template="[action=home]"
incparam="action"
/>
</div>
Und ab da beginnen meine Verständnisschwierigkeiten...
Die delete.html könnte wie folgt aussehen:
Code: Alles auswählen
<h2>Nachricht löschen</h2>
<p>Soll die Nachricht mit der ID <html:placeholder name="id"/> wirklich gelöscht werden?</p>
<core:addtaglib namespace="tools::form::taglib" prefix="html" class="form" />
<html:form name="msg">
<form:button name="send" value="Löschen"/>
</html:form>
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
So würde ich das erstmal der Einfachheit halber machen. Du kannst natürlich auch eine neue Klasse in den bereits existierenden Controller einbinden. Damit hast du dir immerhin die Datei gespart.ma2604121 hat geschrieben: Bekommt die nun einen eigenen Controller, der nichts anderes macht, als nach Drücken des Löschen-Buttons die entsprechende Methode des Mappers auszuführen?
Es gibt aber auch noch die Möglichkeit des AJAX

Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Und wie würde ich die dann innerhalb des messengerController aufrufen? Da klafft noch eine große Lücke in meinem Verständnis...dave hat geschrieben:So würde ich das erstmal der Einfachheit halber machen. Du kannst natürlich auch eine neue Klasse in den bereits existierenden Controller einbinden. Damit hast du dir immerhin die Datei gespart.
Müsste da dann anhand der $_GET-Daten eine Überprüfung stattfinden, welche Methode ausgeführt wird?
Eins nach dem anderen...dave hat geschrieben:Es gibt aber auch noch die Möglichkeit des AJAX. Aber darüber würde dann im Hintergrund auch nur ne Action ausgeführt, welche die Methode des Mappers durchführt.

Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Dann hast/brauchst du kein Template, außer du willst eine Bestätitung vorher abschicken lassen, in dem Fall wäre dann die aktuelle Lösung schon die Sinnvollste denke ich.
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Mich interessieren letzendlich natürlich alle drei Varianten:Screeze hat geschrieben:Die alternative (und sogar schon die vorarbeit zu AJAX) wäre eine Frontcontroller-Action. Die kann auch direkt angesprochen werden, muss nicht zwingend durch AJAX passieren.
Dann hast/brauchst du kein Template, außer du willst eine Bestätitung vorher abschicken lassen, in dem Fall wäre dann die aktuelle Lösung schon die Sinnvollste denke ich.
- meine derzeitige Variante mit einem Template zwecks Nachfrage
- im späteren eine AJAX-Umsetzung
- und die Frontcontroller-Action
Hast Du ein Beispiel, was ich mir unter der FC-Action vorstellen kann/muss?
Ich denke, dass das hier ist: Action- und Input-Klassen.
Leider kann ich mir anhand des Beispiels nicht genau klar machen, wie das funktioniert.
Wo muss die Datei hin?
Wie starte ich diese Action? Nur über den Link?
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Ich habe nun zwei Ordner
Code: Alles auswählen
/apps/config/core/fcaction/messenger
/apps/messenger/fcactions
Im config-Ordner ist wiederum die DEFAULT_actionconfig.ini, die wie folgt aussieht
Code: Alles auswählen
[deleteAction]
FC.ActionNamespace = "messenger::fcactions"
FC.ActionFile = "deleteMessageAction"
FC.ActionClass = "deleteMessageAction"
FC.InputFile = "deleteMessageAction"
FC.InputClass = "deleteMessageAction"
FC.InputParams = ""
Code: Alles auswählen
<?php
class deleteMessageAction extends AbstractFrontcontrollerAction{
public function run() {
}
}
?>
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Code: Alles auswählen
FC.InputFile = "deleteMessageAction"
FC.InputClass = "deleteMessageAction"
Btw., du solltest »deleteMessageAction« zu »DeleteMessageAction« umbennen (und den Dateinamen entsprechend anpassen).
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Ein "Austausch" zwischen zwei COntrollern ist meiner Meinung nach nicht möglich. Du kannst nunr einen Controller aus deiner HTML aus aufrufen ... aber bitte korrigiert mich, falsch das so falsch sein sollte!ma2604121 hat geschrieben:Und wie würde ich die dann innerhalb des messengerController aufrufen? Da klafft noch eine große Lücke in meinem Verständnis...dave hat geschrieben:So würde ich das erstmal der Einfachheit halber machen. Du kannst natürlich auch eine neue Klasse in den bereits existierenden Controller einbinden. Damit hast du dir immerhin die Datei gespart.
Müsste da dann anhand der $_GET-Daten eine Überprüfung stattfinden, welche Methode ausgeführt wird?
Das mit den Actions ist eine relativ komnplizierte Sache, wie eich finde.ma2604121 hat geschrieben:Hast Du ein Beispiel, was ich mir unter der FC-Action vorstellen kann/muss?
Ich denke, dass das hier ist: Action- und Input-Klassen.
Leider kann ich mir anhand des Beispiels nicht genau klar machen, wie das funktioniert.

In deiner Bootstrap (index.php) definiserst du deine Action:
Code: Alles auswählen
$fC->registerAction('portal::actionconfig', 'GenericDomainObject');
Code: Alles auswählen
portal/actionconfig/{CONTEXT}/DEFAULT_actionconfig.ini
Diese Config-Datei sieht dann zum Beuspiel so aus:
Code: Alles auswählen
[GenericDomainObject]
FC.ActionNamespace = "sites::design1::pres::biz"
FC.ActionFile = "registerActionSession"
FC.ActionClass = "registerActionSession"
FC.InputFile = "registerActionInput"
FC.InputClass = "registerActionInput"
FC.InputParams = ""
Code: Alles auswählen
FC.ActionNamespace = "sites::design1::pres::biz"
Code: Alles auswählen
FC.ActionFile = "registerActionSession"
Code: Alles auswählen
FC.ActionClass = "registerActionSession"

Code: Alles auswählen
FC.InputFile = "registerActionInput"
FC.InputClass = "registerActionInput"
In meiner
Code: Alles auswählen
FC.InputFile = "registerActionInput"
Code: Alles auswählen
class registerActionInput extends FrontcontrollerInput {
function registerActionInput(){
}
}

Joah, in der
Code: Alles auswählen
FC.ActionClass = "registerActionSession"

Soweit zur Action, vllt. hilft es ja

Viel Erfolg + Prost!

Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Code: Alles auswählen
Exception-ID: 5f787e70f75d909ed5f51aec2e77fd1a
Type: ConfigurationException
Message: [IniConfigurationProvider::loadConfiguration()] Configuration with namepace "messenger::actionconfig", context "", language "de", environment "DEFAULT", and name "actionconfig.ini" cannot be loaded!
Number: 256
File: /var/www/apf1/apps/core/configuration/provider/ini/IniConfigurationProvider.php
Line: 77
Code: Alles auswählen
$fC->registerAction('messenger::actionconfig', 'deleteAction');
Code: Alles auswählen
/apps/messenger/actionconfig/messenger/
In diesem liegt folgende DEFAULT_actionconfig.ini
Code: Alles auswählen
[deleteAction]
FC.ActionNamespace = "messenger::fcactions"
FC.ActionFile = "deleteMessageAction"
FC.ActionClass = "deleteMessageAction"
FC.InputFile = "deleteMessageAction"
FC.InputClass = "deleteMessageAction"
FC.InputParams = ""
Code: Alles auswählen
/apps/messenger/fcactions/
Code: Alles auswählen
<?php
class deleteMessageAction extends AbstractFrontcontrollerAction{
public function run() {
}
}
?>
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Hast du in deriner Bootastrap sowas ind er Art?
Code: Alles auswählen
$fC->setContext('projectone');
/apps/messenger/actionconfig/messenger/
Code: Alles auswählen
/apps/messenger/actionconfig/projectone/
Code: Alles auswählen
$fC->setContext('messenger');
Viel Erfolg

Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Code: Alles auswählen
<?php
// Fehlermeldungen einschalten
ini_set('html_errors', 'on');
// Zeitzone setzen
date_default_timezone_set('Europe/Berlin');
// Pagecontroller starten
require_once './apps/core/pagecontroller/pagecontroller.php';
// Frontcontroller starten
import('core::frontcontroller', 'Frontcontroller');
$fC = &Singleton::getInstance('Frontcontroller');
$fC->setContext('messenger');
$fC->registerAction('messenger::actionconfig', 'deleteAction');
// Startseite anzeigen
echo $fC->start('messenger::pres::templates', 'main');
?>
Re: [Beispiel] Verständnis Umsetzung MVC innerhalb des APF
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast