PDA

Zobacz pełną wersję : Problem z zmienną $controller przy wysyłaniu formularza



Craft
05-08-2010, 21:55
Witam,

-------------------------------------------------------------------------------------------------------------------------------------------
Problem rozwiązany. Nie zauważyłem komunikatu error.
W pliku modelu Pay.php zabrakło na początku linijki

JTable::addIncludePath(JPATH_COMPONENT.DS.'tables' );

Pozdrawiam
-------------------------------------------------------------------------------------------------------------------------------------------

Otrzymuję taki oto błąd na pustej stronie i nie mam pojęcia jak go rozumieć. Próbowałem już wszystkich znanych mi kombinacji i ustawień pliku controller.php a także innych plików.
Może ktoś się już z tym spotkał?

Dodam, że wrażliwą linijką jest wywołanie metody $model->store($dane); w pliku view.html.php
a linia 16 w pliku ogloszenia.php to:
if($controller == JREquest::getWord('controller')) {

------------------------------------------------------------------------
Notice: Undefined variable: controller in /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/ogloszenia.php on line 16 Call Stack: 0.0003 377592 1. {main}() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/index.php:0 0.1959 4168120 2. JSite->dispatch() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/index.php:68 0.2086 4395888 3. JComponentHelper->renderComponent() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/includes/application.php:124 0.2166 4448504 4. require_once('/home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/ogloszenia.php') /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/libraries/joomla/application/component/helper.php:162 Notice: Undefined variable: controller in /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/ogloszenia.php on line 18 Call Stack: 0.0003 377592 1. {main}() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/index.php:0 0.1959 4168120 2. JSite->dispatch() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/index.php:68 0.2086 4395888 3. JComponentHelper->renderComponent() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/includes/application.php:124 0.2166 4448504 4. require_once('/home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/ogloszenia.php') /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/libraries/joomla/application/component/helper.php:162 Fatal error: Call to a member function bind() on a non-object in /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/models/pay.php on line 20 Call Stack: 0.0003 377592 1. {main}() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/index.php:0 0.1959 4168120 2. JSite->dispatch() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/index.php:68 0.2086 4395888 3. JComponentHelper->renderComponent() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/includes/application.php:124 0.2166 4448504 4. require_once('/home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/ogloszenia.php') /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/libraries/joomla/application/component/helper.php:162 0.2300 4705072 5. JController->execute() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/ogloszenia.php:32 0.2301 4705144 6. OgloszeniaController->pay() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/libraries/joomla/application/component/controller.php:236 0.2302 4706536 7. JController->display() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/controller.php:39 0.2387 4903236 8. OgloszeniaViewPay->display() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/libraries/joomla/application/component/controller.php:310 0.3398 4925080 9. OgloszeniaModelPay->store() /home/lchrzan/NetBeansProjects/JOOMLA/joomcom/components/com_ogloszenia/views/pay/view.html.php:39
------------------------------------------------------------------------

1. ogloszenia.php


</php
ini_set( 'display_errors', 'On' );
error_reporting( E_ALL );

defined( '_JEXEC' ) or die( 'Restricted access' );

require_once( JPATH_COMPONENT.DS.'controller.php' );

if($controller == JREquest::getWord('controller')) {

$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'. php';

if(file_exists($path)) {

require_once $path;
} else {

$controller = '';
}
}

$classname = 'OgloszeniaController'.$controller;
$controller = new $classname();

$controller->execute( JRequest::getVar( 'task' ) );

$controller->redirect();
?>


2. controller.php


defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.controller') ;

class OgloszeniaController extends JController {

function __construct( $default = array() ) {

$language =& JFactory::getLanguage();
$language->load('com_ogloszenia');
parent::__construct( $default );
}

(...)

function pay() {

JRequest::setVar('view', 'Pay');
JRequest::setVar('layout','default');
parent::display();
}



3. Model pay



defined('_JEXEC') or die();

jimport('joomla.application.component.model');

class OgloszeniaModelPay extends JModel {

function store($dane) {

$table = JTable::getInstance('ogloszenia_pay', 'table');

if (!$table->bind($dane)) {
$this->setError($this->_db->getErrorMsg());
return false;
}

if (!$table->check()) {
$this->setError($this->_db->getErrorMsg());
return false;
}

if (!$table->store()) {
$this->setError($this->_db->getErrorMsg());
return false;
}

return true;
}
}


4. view.html.php



defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.view');

require_once (JPATH_SITE.DS.'components'.DS.'com_content'.DS.'h elpers'.DS.'route.php');

class OgloszeniaViewPay extends JView {

function display($tpl = null) {

$modelConfig =& JModel::getInstance('Config', 'OgloszeniaModel');
$model =& $this->getModel('pay');

(..)
$model->store($dane);

header('Location: https://www.platnosci.pl/paygw/ISO/NewPayment?'.http_build_query($dane));

}
}



5. default.php



defined('_JEXEC') or die('Restricted access');
?>

<h1>Prenumerata online</h1>
<form action='' method='post' class="blockLabels">
(...)

<button id='place' name='button' onClick="this.form.submit();" disabled="true">Płacę</button>
</form>