arHandle cannot be null editing page type

Permalink
I'm trying to add a new page type (to use with Composer). But when I try to edit the page (Defaults->Edit this Page), I get this error:

mysqlt error: [1048: Column 'arHandle' cannot be null] in EXECUTE("INSERT INTO Areas (cID,arHandle,arIsGlobal) VALUES ('177',NULL,'0')")


Based on a search here for similar reported errors I've tried clearing the cache and simplifying the page name. Neither of those helped.

In case it's relevant, I can't even get the Edit this Page button to appear for the page unless I'm logged in as the super user.

Ideas?

Thanks,
Mark

# concrete5 Version
5.6.3.1
# concrete5 Packages
Easy Accordion (1.1.2), Easy tabs (1.7.2), Login (1.1.1), PHP block by ND (1.0), Revolution Slider (2.3.8), Simple Image Gallery (1.1.3), SuperMint Theme (2.0.7.2).
# concrete5 Overrides
blocks/image, js/ccm.app.js
# concrete5 Cache Settings
Block Cache - On
Overrides Cache - Off
Full Page Caching - Off
# Server Software
Apache
# Server API
cgi-fcgi
# PHP Version

 
hutman replied on at Permalink Best Answer Reply
hutman
In your theme, did you create a page_type.php for this new Page Type? This error seems like you have a Page Type with an area definition that is blank, such as this:

<?php 
$a = new Area();
$a->display($c);
?>


When it should be like this:

<?php 
$a = new Area('Main');
$a->display($c);
?>


If you did not create a new php file for this page type, check your default.php
mwickens replied on at Permalink Reply
Thanks. I missed that bit of the documentation.

I guess it's a theme (SuperMint) bug that the default.php doesn't work? Or do I always have to create a .php file before adding a page type? If that's the case it seems like the UI should warn you about that.

Mark
hutman replied on at Permalink Reply
hutman
You do not have to create a PHP file each time you make a new page type, just if you were trying to create a different layout or anything else specific.

If you open up the default.php in the theme folder can you see if there is some code like in my sample?
mwickens replied on at Permalink Reply
Nope. The "new Area()"s all have a value passed:

default.php:62:                $a = new Area('Sidebar');
default.php:77:                $a = new Area('Main');
default.php:84:                $a = new Area('Under Main');