1

When my multisite is set up as @web/site, I cannot access the current site handle from my controllers.

Craft::$app->getSites()->currentSite->handle

I think this is because my form action defaults to the root site ie @web/actions/controller... rather than @web/site/actions/controller...

Is there a way to get the current site or do I need to pass it into the controller from the form?

| improve this question | | | | |
  • Why doesn't Craft::$app->getSites()->currentSite->handle work? What is it returning for you? – Brad Bell Aug 29 '18 at 23:47
  • It is returning the default site handle. I have a domain name example.com and multisites set up as example.com/site1 and example.com/site2. The controller gets called from example.com/actions/controller therefor retuning example as the site handle and not site1 or site2. – David A McInnis Sep 10 '18 at 1:12
  • I'm having the same problem. Did you ever figure this out? – Ryan Mar 17 at 14:25
1

I know this is a year and a half late, but maybe it helps someone else. I have a large multi-site project with a site for country and language. For example:

  • Germany (German) - default - /de-de/
  • Germany (English) - /en-de/
  • Austria (German) - /de-at/
  • Austria (English) - /en-at/
  • etc

I was having this problem when posting to one of my controller's actions and then trying to get the currentSite within my plugin via Craft::$app->getSites()->currentSite.

In my JavaScript, my action looked like:

/actions/pluginHandle/controllerClass/actionMethod

Whenever I'd fetch the current site with Craft::$app->getSites()->currentSite it would always return the default site (Germany/German), and that's because I wasn't including the first URL segment (to get Austria/English, for example):

/en-at/actions/pluginHandle/controllerClass/actionMethod

Without that, Craft was resorting to getting the default site.

| improve this answer | | | | |
1

With Craft CMS 3, you can spit out current site values directly with currentSite.

Site ID:            {{ currentSite.id }}
Site Handle:        {{ currentSite.handle }}
Site Name:          {{ currentSite.name }}
Site Language:      {{ currentSite.language }}
Is Primary Site?:   {{ currentSite.primary }}
Base URL:           {{ currentSite.baseUrl }}

https://docs.craftcms.com/v3/sites.html#site-groups

| improve this answer | | | | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.