Editing Admin View results in 500 error after compile #985

Closed
opened 2023-03-26 21:22:42 +00:00 by mwweb · 5 comments

Steps to reproduce the issue

I have a component I had created, and installed fine. I added some new fields to an admin view, compiled, and now when attempting to access the installed component, I am receiving

500 View class not found [class, file]: churchmgmtViewchurchmgmt, /home/devmwweb/public_html/administrator/components/com_churchmgmt/views/churchmgmt/view.html.php

Expected result

Component would install fine with no errors.

Actual result

Error generated:

500 View class not found [class, file]: churchmgmtViewchurchmgmt, /home/devmwweb/public_html/administrator/components/com_churchmgmt/views/churchmgmt/view.html.php

System information (as much as possible)

  • OS Name & Version: CentOS v7.9.2009 STANDARD kvm
  • MySql Version: MariaDB 10.3.38-MariaDB
  • Apache Version: Apache/2.4.56 (cPanel)
  • PHP Version: 8.0.28
  • Joomla Version: 3.10.11
  • JCB Version: 3.1.19
  • Browser: Opera and Chrome

Additional comments

### Steps to reproduce the issue I have a component I had created, and installed fine. I added some new fields to an admin view, compiled, and now when attempting to access the installed component, I am receiving ``` 500 View class not found [class, file]: churchmgmtViewchurchmgmt, /home/devmwweb/public_html/administrator/components/com_churchmgmt/views/churchmgmt/view.html.php ``` ### Expected result Component would install fine with no errors. ### Actual result Error generated: ``` 500 View class not found [class, file]: churchmgmtViewchurchmgmt, /home/devmwweb/public_html/administrator/components/com_churchmgmt/views/churchmgmt/view.html.php ``` ### System information (as much as possible) - OS Name & Version: CentOS v7.9.2009 STANDARD kvm - MySql Version: MariaDB 10.3.38-MariaDB - Apache Version: Apache/2.4.56 (cPanel) - PHP Version: 8.0.28 - Joomla Version: 3.10.11 - JCB Version: 3.1.19 - Browser: Opera and Chrome ### Additional comments
Owner

Does this issue persist in PHP 7.4? and using Firefox?

Does this issue persist in PHP 7.4? and using Firefox?
Author

I see what's happening. During the compile, the file code isn't being properly converted/translated:

<?php
/**
 * @package    Joomla.Component.Builder
 *
 * @created    30th April, 2015
 * @author     Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
 * @github     Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
 * @copyright  Copyright (C) 2015 Vast Development Method. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

###DASH_VIEW_HTML_HEADER###

/**
 * ###Component### View class
 */
class ###Component###View###Component### extends JViewLegacy
{
	/**
	 * View display method
	 * @return void
	 */
	function display($tpl = null)
	{
		// Assign data to the view
		$this->icons			= $this->get('Icons');
		$this->contributors		= ###Component###Helper::getContributors();###DASH_GET_CUSTOM_DATA###
		
		// get the manifest details of the component
		$this->manifest = ###Component###Helper::manifest();
		
		// Set the toolbar
		$this->addToolBar();
		
		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			throw new Exception(implode("\n", $errors), 500);
		}

		// Display the template
		parent::display($tpl);

		// Set the document
		$this->setDocument();
	}

	/**
	 * Setting the toolbar
	 */
	protected function addToolBar()
	{
		$canDo = ###Component###Helper::getActions('###component###');
		JToolBarHelper::title(JText::_('COM_###COMPONENT###_DASHBOARD'), 'grid-2');

		// set help url for this view if found
		$this->help_url = ###Component###Helper::getHelpUrl('###component###');
		if (###Component###Helper::checkString($this->help_url))
		{
			JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
		}

		if ($canDo->get('core.admin') || $canDo->get('core.options'))
		{
			JToolBarHelper::preferences('com_###component###');
		}
	}

	/**
	 * Method to set up the document properties
	 *
	 * @return void
	 */
	protected function setDocument()
	{
		$document = JFactory::getDocument();
		
		// add dashboard style sheets
		$document->addStyleSheet(JURI::root() . "administrator/components/com_###component###/assets/css/dashboard.css");
		
		// set page title
		$document->setTitle(JText::_('COM_###COMPONENT###_DASHBOARD'));
		
		// add manifest to page JavaScript
		$document->addScriptDeclaration("var manifest = jQuery.parseJSON('" . json_encode($this->manifest) . "');", "text/javascript");
	}
}

This was done under PHP 7.4 in Firefox.

I see what's happening. During the compile, the file code isn't being properly converted/translated: ``` <?php /** * @package Joomla.Component.Builder * * @created 30th April, 2015 * @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com> * @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder> * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ // No direct access to this file defined('_JEXEC') or die('Restricted access'); ?> ###BOM### // No direct access to this file defined('_JEXEC') or die('Restricted access'); ###DASH_VIEW_HTML_HEADER### /** * ###Component### View class */ class ###Component###View###Component### extends JViewLegacy { /** * View display method * @return void */ function display($tpl = null) { // Assign data to the view $this->icons = $this->get('Icons'); $this->contributors = ###Component###Helper::getContributors();###DASH_GET_CUSTOM_DATA### // get the manifest details of the component $this->manifest = ###Component###Helper::manifest(); // Set the toolbar $this->addToolBar(); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new Exception(implode("\n", $errors), 500); } // Display the template parent::display($tpl); // Set the document $this->setDocument(); } /** * Setting the toolbar */ protected function addToolBar() { $canDo = ###Component###Helper::getActions('###component###'); JToolBarHelper::title(JText::_('COM_###COMPONENT###_DASHBOARD'), 'grid-2'); // set help url for this view if found $this->help_url = ###Component###Helper::getHelpUrl('###component###'); if (###Component###Helper::checkString($this->help_url)) { JToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolBarHelper::preferences('com_###component###'); } } /** * Method to set up the document properties * * @return void */ protected function setDocument() { $document = JFactory::getDocument(); // add dashboard style sheets $document->addStyleSheet(JURI::root() . "administrator/components/com_###component###/assets/css/dashboard.css"); // set page title $document->setTitle(JText::_('COM_###COMPONENT###_DASHBOARD')); // add manifest to page JavaScript $document->addScriptDeclaration("var manifest = jQuery.parseJSON('" . json_encode($this->manifest) . "');", "text/javascript"); } } ``` This was done under PHP 7.4 in Firefox.
Author

Just as a test, and not something I would usually do, but I tested prior versions of JCB to where I COULD compile successfully. JCB version 3.1.12 I was able to successfully compile and install, then access the component. tagged versions following that (3.1.15, 3.1.17, 3.1.19) failed with the above.

Just as a test, and not something I would usually do, but I tested prior versions of JCB to where I COULD compile successfully. JCB version 3.1.12 I was able to successfully compile and install, then access the component. tagged versions following that (3.1.15, 3.1.17, 3.1.19) failed with the above.
Owner

In that case please review these closed issues, and see if it resolves yours:

#982
#978

In that case please review these closed issues, and see if it resolves yours: https://git.vdm.dev/joomla/Component-Builder/issues/982 https://git.vdm.dev/joomla/Component-Builder/issues/978

This problem seems to be fixed in version 3.1.23-beta

But more details about this error here:
\libraries\src\MVC\Factory\LegacyFactory.php:85

() 	JROOT\libraries\src\MVC\Factory\LegacyFactory.php:85
-----
Joomla\CMS\MVC\Factory\LegacyFactory->createView() 	JROOT\libraries\src\MVC\Controller\BaseController.php:590 
-----
Joomla\CMS\MVC\Controller\BaseController->createView() 	JROOT\libraries\src\MVC\Controller\BaseController.php:833 
-----
Joomla\CMS\MVC\Controller\BaseController->getView() 	JROOT\libraries\src\MVC\Controller\BaseController.php:613 
-----
Joomla\CMS\MVC\Controller\BaseController->display() 	JROOT\administrator\components\com_mycomponent\controller.php:95
-----
TestController->display() 	JROOT\libraries\src\MVC\Controller\BaseController.php:702
-----
Joomla\CMS\MVC\Controller\BaseController->execute() 	JROOT\administrator\components\com_test\test.php:45 
-----
require_once() 	JROOT\libraries\src\Component\ComponentHelper.php:402 
-----
Joomla\CMS\Component\ComponentHelper::executeComponent() 	JROOT\libraries\src\Component\ComponentHelper.php:377 
-----
Joomla\CMS\Component\ComponentHelper::renderComponent() 	JROOT\libraries\src\Application\AdministratorApplication.php:101 
-----
Joomla\CMS\Application\AdministratorApplication->dispatch() 	JROOT\libraries\src\Application\AdministratorApplication.php:159 
-----
Joomla\CMS\Application\AdministratorApplication->doExecute() 	JROOT\libraries\src\Application\CMSApplication.php:225 
-----
Joomla\CMS\Application\CMSApplication->execute() 	JROOT\administrator\index.php:51 
**This problem seems to be fixed in version 3.1.23-beta** But more details about this error here: \libraries\src\MVC\Factory\LegacyFactory.php:85 ``` () JROOT\libraries\src\MVC\Factory\LegacyFactory.php:85 ----- Joomla\CMS\MVC\Factory\LegacyFactory->createView() JROOT\libraries\src\MVC\Controller\BaseController.php:590 ----- Joomla\CMS\MVC\Controller\BaseController->createView() JROOT\libraries\src\MVC\Controller\BaseController.php:833 ----- Joomla\CMS\MVC\Controller\BaseController->getView() JROOT\libraries\src\MVC\Controller\BaseController.php:613 ----- Joomla\CMS\MVC\Controller\BaseController->display() JROOT\administrator\components\com_mycomponent\controller.php:95 ----- TestController->display() JROOT\libraries\src\MVC\Controller\BaseController.php:702 ----- Joomla\CMS\MVC\Controller\BaseController->execute() JROOT\administrator\components\com_test\test.php:45 ----- require_once() JROOT\libraries\src\Component\ComponentHelper.php:402 ----- Joomla\CMS\Component\ComponentHelper::executeComponent() JROOT\libraries\src\Component\ComponentHelper.php:377 ----- Joomla\CMS\Component\ComponentHelper::renderComponent() JROOT\libraries\src\Application\AdministratorApplication.php:101 ----- Joomla\CMS\Application\AdministratorApplication->dispatch() JROOT\libraries\src\Application\AdministratorApplication.php:159 ----- Joomla\CMS\Application\AdministratorApplication->doExecute() JROOT\libraries\src\Application\CMSApplication.php:225 ----- Joomla\CMS\Application\CMSApplication->execute() JROOT\administrator\index.php:51 ```
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: joomla/Component-Builder#985
No description provided.