PDA

Zobacz pełną wersję : "Start > mój komponent" - jak utrzymać ścieżkę w trakcie pracy komponentu



DarkOfTheMoon
23-02-2006, 23:46
Przy wywołaniu komponentu ładnie się pojawia, ale jeżeli ze strony głównej komponentu przechodzę do wykonania innego zadania i $task realizuje inną funkcję komponentu, pozostaje już tylko "Start".
O przekazaniu jakiej zmiennej Joomlowskiej zapomniałem? ($option przekazuję oczywiście)

stone
24-02-2006, 08:57
Brakuje ci Itemid

DarkOfTheMoon
24-02-2006, 13:53
$Itemid przekazywałem jeszcze przed opisaniem problemu, ale przy wywołaniu funkcji z komponentu otrzymywałem komunikat:

"Treść którą chcesz zobaczyć nie istnieje. Proszę wybrać inny element z nawigacji"

Dla przykładu plik x.php

require_once( $mainframe->getPath( 'front_html' ) );


switch( $task ) {
case 'new':
HTML_carmart::nowe($option, $Itemid);
break;

default:
HTML_carmart::brak($option, $Itemid);
break;
Plik x.html.php

class HTML_carmart {

function brak($option, $Itemid) {

...
<form action="index.php" method="post" name="adminForm">
<div class="carmart_menu" align="right">
<?php
mosMenuBar::startTable();
mosMenuBar::addNew('new', 'Nowe');
mosMenuBar::editList('edit', 'Edytuj');
mosMenuBar::publish('publish');
mosMenuBar::unpublish('unpublish');
mosMenuBar::deleteList( ' ', 'delete', 'Usuń' );
mosMenuBar::endTable();
?>
</div>
<input type="hidden" name="option" value="<?php echo $option;?>"/>
<input type="hidden" name="option" value="<?php echo $Itemid;?>"/> // poprawione na Itemid
<input type="hidden" name="task" value="new" />
</form>

<?php

}

function nowe($option, $Itemid) {

?>
<div class="carmart_menu" align="right">
<?php
mosMenuBar::startTable();
mosMenuBar::addNew('new', 'Nowe');
mosMenuBar::editList('edit', 'Edytuj');
mosMenuBar::publish('publish');
mosMenuBar::unpublish('unpublish');
mosMenuBar::deleteList( ' ', 'delete', 'Usuń' );
mosMenuBar::endTable();

...

DarkOfTheMoon
24-02-2006, 19:40
Pozwoliłem sam sobie odpowiedzieć na część problemu aby nie umknęło i nie wprowadzało niepotrzebnego zamieszania. Otóż przytoczony komunikat błędu spowodowany został moim błędem w nazewnictwie zmiennych przekazywanych w formularzu (zaznaczyłem w kodzie na czerwono). Po korekcie zmienna jest już poprawnie przekazywana do funkcji bez nikakich problemów.

Niestety pomimo przekazania $option oraz $Itemid, ścieżka zmienia się z "Start > mój_komponent" na "Start"...

DarkOfTheMoon
24-02-2006, 19:57
Kończąc pisanie poprzedniego posta, pomyślałem sobie o jeszcze jednej możliwości - może dane pobierane są z globalnej GET a nie POST. Zmieniłem metodę przesyłania formularza na GET i zadziałało!

I takie to już moje szczęście na tym forum, sam zaczynam i sam kończę... Niech służy innym!