Pulling my hair out... custom template not returning variables :(

I feel like I’ve missed a really simple/stupid step in all this, and I’ve spent 2 days trying to debug this. Please could someone assist?

This is a template. My file name is template-builder.blade.php. My controller filename is TemplateBuilder.php. My class is TemplateBuilder.

The var_dump correctly sends data to my blade view, but $foobar is not recognized. I don’t know what else to do.

This is PHP 7.3 and my composer packages are:

  "require": {
    "php": ">=7.3",
    "composer/installers": "~1.9",
    "illuminate/support": "5.6.*",
    "roots/sage-lib": "~9.0.9",
    "soberwp/controller": "~2.1.2"
  },

Also FWIW, all this works fine if i move it to page.php and the Page controller… so its something about the naming convention thats not working but I couldn’t tell you what… I’ve tried every form of capitalization combination but nothing works…

Probably a matter of PEBKAC but I’m at my wits end…

Controller matches based on the class name added to body-class by WordPress. For custom page templates I think it’s something like page-template-template-builder or PageTemplateTemplateBuilder but see what’s being output in the body class.

1 Like

Yeah I’ve seen this reply of yours in a few places :grin: I have tried this too, but I then get Fatal error: Uncaught ReflectionException: Class App\Controllers\TemplateBuilder does not exist

So its expecting to find TemplateBuilder and because the var_dump is working, it shows that the controller is being found, its just not returning variables to Blade?

Can this help somehow?


I slowly suspect some composer dependency of the Sage theme (not of the Bedrock based site if any) may be outdated or too far apart in their versions. Have you ran composer update for the Sage theme, are there any too wide version constraints?
composer update
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload files
Carbon 1 is deprecated, see how to migrate to Carbon 2.
https://carbon.nesbot.com/docs/#api-carbon-2
You can run './vendor/bin/upgrade-carbon' to get help in updating carbon and other frameworks and libraries that depend on it.

i then ran './vendor/bin/upgrade-carbon' and it did a heap of updates. I then re-ran composer update and it spat out a bunch of errors:

composer update
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Conclusion: don’t install roots/sage-installer 1.6.1 (conflict analysis result)
- Conclusion: don’t install roots/sage-installer 1.6.2 (conflict analysis result)
- Conclusion: don’t install roots/sage-installer 1.6.3 (conflict analysis result)
- Conclusion: don’t install roots/sage-installer 1.6.4 (conflict analysis result)
- illuminate/console[v5.6.0, …, v5.6.39] require illuminate/support 5.6.* -> found illuminate/support[v5.6.0, …, v5.6.39] but it conflicts with your root composer.json require (^5.8.0).
- illuminate/console[v5.7.0, …, v5.7.28] require illuminate/support 5.7.* -> found illuminate/support[v5.7.0, …, v5.7.28] but it conflicts with your root composer.json require (^5.8.0).
- Root composer.json requires roots/sage-installer ~1.6 -> satisfiable by roots/sage-installer[1.6.0, …, 1.6.4].
- Conclusion: don’t install symfony/process v5.0.7 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.1] | install one of symfony/process[v3.4.25, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.25 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.4 (conflict analysis result)
- Conclusion: don’t install illuminate/console[v5.8.8] | install one of composer/composer[2.0.10, 2.0.11], symfony/process[v3.4.35, …, v3.4.47, v4.2.2, …, v4.4.19, v5.0.8, …, v5.2.3] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.2] | install one of symfony/process[v3.4.26, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.3] | install one of symfony/process[v3.4.27, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v3.4.26] | install one of composer/composer[2.0.10, 2.0.11], symfony/process[v3.4.35, …, v3.4.47, v4.4.0, …, v4.4.19, v5.0.8, …, v5.2.3] (conflict analysis result)
- Conclusion: don’t install symfony/process[v3.4.27] | install one of composer/composer[2.0.10, 2.0.11], symfony/process[v3.4.35, …, v3.4.47, v4.4.0, …, v4.4.19, v5.0.8, …, v5.2.3] (conflict analysis result)
- Conclusion: don’t install symfony/process v5.0.8 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.4] | install one of symfony/process[v3.4.28, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.28 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.9 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.0.9 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.5] | install one of symfony/process[v3.4.29, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.29 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.11 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.0.10 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.6] | install one of symfony/process[v3.4.30, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.30 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.12 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.0.11 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.7] | install one of symfony/process[v3.4.31, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.31 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.14 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.0 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.8] | install one of symfony/process[v3.4.32, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.32 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.15 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.1 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.9] | install one of symfony/process[v3.4.33, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.33 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.17 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.2 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.10] | install one of symfony/process[v3.4.34, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.34 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.18 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.3 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.11] | install one of symfony/process[v3.4.35, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.35 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.19 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.4 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.2.12] | install one of symfony/process[v3.4.36, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.36 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.20 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.5 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.0] | install one of symfony/process[v3.4.37, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.37 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.22 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.6 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.1] | install one of symfony/process[v3.4.38, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.38 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.24 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.7 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.2] | install one of symfony/process[v3.4.39, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.39 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.27 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.8 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.3] | install one of symfony/process[v3.4.40, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.40 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.28 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.9 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.4] | install one of symfony/process[v3.4.41, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.41 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.29 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.10 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.16] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.15] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.14] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.13] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.12] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.11] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.10] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.9] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.8] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.7] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.6] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.5] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.4] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.3] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.2] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.1] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.0] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.11] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.10] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.9] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.8] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.7] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.6] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.3.5] | install one of symfony/process[v3.4.42, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.42 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.30 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.1.11 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.17] | install one of symfony/process[v3.4.43, …, v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.43 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.31 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.2.0 (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.44 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.32 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.2.1 (conflict analysis result)
- Conclusion: don’t install symfony/process[v5.2.2] | install one of symfony/process[v3.4.45, v3.4.46] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.45 (conflict analysis result)
- Conclusion: don’t install symfony/process[v3.4.46] | install illuminate/console[v5.8.33] (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.33 (conflict analysis result)
- Conclusion: don’t install symfony/process v5.2.3 (conflict analysis result)
- Conclusion: don’t install composer/composer 2.0.10 (conflict analysis result)
- Conclusion: don’t install composer/composer 2.0.11 (conflict analysis result)
- Conclusion: don’t install symfony/process[v4.4.18] | install symfony/process[v3.4.47] (conflict analysis result)
- Conclusion: don’t install symfony/process v3.4.47 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.34 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.0 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.35 (conflict analysis result)
- Conclusion: don’t install symfony/process v4.4.19 (conflict analysis result)
- Conclusion: don’t install illuminate/console v5.8.36 (conflict analysis result)
- Root composer.json requires composer/composer ^2.0 -> satisfiable by composer/composer[2.0.0, …, 2.0.11].
- illuminate/console v5.8.2 requires symfony/process ^4.2 -> satisfiable by symfony/process[v4.2.0, …, v4.4.19].
- Conclusion: don’t install one of symfony/process[v5.0.6], illuminate/console[v5.8.2] | install one of symfony/process[v4.3.4, …, v4.4.19] (conflict analysis result)
- Conclusion: don’t install one of symfony/process[v5.0.5], illuminate/console[v5.8.2] | install one of symfony/process[v4.3.3, …, v4.4.19] (conflict analysis result)
- Conclusion: don’t install one of symfony/process[v5.0.4], illuminate/console[v5.8.2] | install one of symfony/process[v4.3.2, …, v4.4.19] (conflict analysis result)
- Conclusion: don’t install one of symfony/process[v5.0.3], illuminate/console[v5.8.2] | install one of symfony/process[v4.3.1, …, v4.4.19] (conflict analysis result)
- Conclusion: don’t install one of symfony/process[v5.0.2], illuminate/console[v5.8.2] | install one of symfony/process[v4.3.0, …, v4.4.19] (conflict analysis result)
- Conclusion: don’t install one of symfony/process[v5.0.1], illuminate/console[v5.8.2] | install one of symfony/process[v4.2.12, …, v4.4.19] (conflict analysis result)
- Conclusion: don’t install one of symfony/process[v5.0.0], illuminate/console[v5.8.2] | install one of symfony/process[v4.2.11, …, v4.4.19] (conflict analysis result)
- roots/sage-installer 1.6.0 requires illuminate/console ~5.6 -> satisfiable by illuminate/console[v5.6.0, …, v5.8.36].
- Conclusion: don’t install illuminate/console v5.8.3 (conflict analysis result)
- You can only install one version of a package, so only one of these can be installed: symfony/process[v2.8.52, v3.3.0, …, v3.4.47, v4.2.0, …, v4.4.19, v5.0.0, …, v5.2.3].
- Conclusion: install one of composer/composer[2.0.10, 2.0.11], symfony/process[v2.8.52, v3.4.35, …, v3.4.47, v4.4.0, …, v4.4.19, v5.0.0, …, v5.2.3] (conflict analysis result)

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

:frowning:

Download the composer.json and composer.lock over your existing ones in the Sage 9.x theme. Remove the vendor/ folder and run composer install.

composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 33 installs, 0 updates, 0 removals

  • Installing kylekatarnls/update-helper (1.2.1): Extracting archive
  • Installing composer/installers (v1.9.0): Extracting archive
  • Installing symfony/translation-contracts (v2.3.0): Extracting archive
  • Installing symfony/polyfill-mbstring (v1.20.0): Extracting archive
  • Installing symfony/translation (v4.4.16): Extracting archive
  • Installing nesbot/carbon (1.25.3): Extracting archive
  • Installing psr/simple-cache (1.0.1): Extracting archive
  • Installing psr/container (1.0.0): Extracting archive
  • Installing illuminate/contracts (v5.6.39): Extracting archive
  • Installing doctrine/inflector (1.4.3): Extracting archive
  • Installing illuminate/support (v5.6.39): Extracting archive
  • Installing illuminate/container (v5.6.39): Extracting archive
  • Installing illuminate/events (v5.6.39): Extracting archive
  • Installing paragonie/random_compat (v9.99.99): Extracting archive
  • Installing symfony/process (v3.4.46): Extracting archive
  • Installing symfony/polyfill-ctype (v1.20.0): Extracting archive
  • Installing ramsey/uuid (3.9.3): Extracting archive
  • Installing symfony/finder (v4.4.16): Extracting archive
  • Installing illuminate/filesystem (v5.6.39): Extracting archive
  • Installing symfony/service-contracts (v2.2.0): Extracting archive
  • Installing symfony/polyfill-php80 (v1.20.0): Extracting archive
  • Installing symfony/polyfill-php73 (v1.20.0): Extracting archive
  • Installing symfony/console (v4.4.16): Extracting archive
  • Installing illuminate/console (v5.6.39): Extracting archive
  • Installing roots/sage-installer (1.6.3): Extracting archive
  • Installing psr/log (1.1.3): Extracting archive
  • Installing symfony/debug (v4.4.16): Extracting archive
  • Installing illuminate/view (v5.6.39): Extracting archive
  • Installing illuminate/config (v5.6.39): Extracting archive
  • Installing roots/sage-lib (9.0.9): Extracting archive
  • Installing brain/hierarchy (2.5.0): Extracting archive
  • Installing soberwp/controller (2.1.2): Extracting archive
  • Installing squizlabs/php_codesniffer (2.9.2): Extracting archive
    Generating autoload files
    Carbon 1 is deprecated, see how to migrate to Carbon 2.
    Carbon - A simple PHP API extension for DateTime.
    You can run ‘./vendor/bin/upgrade-carbon’ to get help in updating carbon and other frameworks and libraries that depend on it.

didn’t seem to do anything…

Hm, could it help to clear the blade cache?

Yeah I’ve deleted that cache folder a few times… no joy.

@strarsis i dunno if you’d be open to it, but i could zip up the docker setup and send it to you via DM to have a look see? or am I pushing my luck :blush:

OK, send me a link. Even easier: Commit the whole thing into a Git repository and push it to some GitHub repository of your own.

Thank you :pray: I invited you to the repo. just run make up

Actually no, github is moaning about the file size of certain folder, so I’m just going to DM you a wetransfer link

I think I found the ‘problem’…

I had a custom template + controller called Builder. I had applied this builder template onto a page that I set as home page. As such, it was using the FrontPage controller, and not my TemplateBuilder controller.

Wish there was a way to have realized this sooner…

Thanks for your input @strarsis

:woman_facepalming:

But isn’t this a bug? Shouldn’t there be a cascade/hierarchy of controllers? The Template controller being used first, then the FrontPage controller? It seems to be a bug.

Yes thats definitely how I thought it would/should work. It should try accept a FrontPage controller, falling which it should use a Template, then Page/Single etc etc

But currently its accepting ONLY a FrontPage controller, otherwise bork

1 Like

soberwp/controller by default only matches one template. AFAIK this is by design. See: How to create a controller file for a custom template page in Sage 9
Matching is done based in the WordPress template heirachy, and only one template ultimately matches. I guess the front page has higher priority than a custom page template?

View Composers in Sage 10 match by blade view file, so they don’t necessarily have the same issues.

2 Likes

This topic was automatically closed after 42 days. New replies are no longer allowed.