https://doc.sitecore.com/xp/en/developers/93/sitecore-experience-manager/dependency-injection.html
using Lincare.Feature.Forms.Controllers;
using Lincare.Feature.Forms.Repositories;
using Microsoft.Extensions.DependencyInjection;
using Sitecore.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Lincare.Feature.Forms.IoC
{
public class FormsConfigurator : IServicesConfigurator
{
public void Configure(IServiceCollection serviceCollection)
{
//adding it here helps with 'no parameterless constructor found' error
serviceCollection.AddTransient<IFormsRepository, FormsRepository>();
serviceCollection.AddTransient<FormsController>();
serviceCollection.AddTransient<VirtualVisitsController>();
}
}
}
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:environment="http://www.sitecore.net/xmlconfig/environment">
<sitecore>
<services>
<configurator type="Lincare.Feature.Forms.IoC.FormsConfigurator, Lincare.Feature.Forms"/>
</services>
Then register routes:
using Sitecore.Pipelines;
using System.Web.Mvc;
using System.Web.Routing;
namespace Lincare.Feature.Forms.Pipelines.Initialize
{
public class RegisterRoutes
{
public virtual void Process(PipelineArgs args)
{
RegisterRoute(RouteTable.Routes);
}
protected virtual void RegisterRoute(RouteCollection routes)
{
RouteTable.Routes.MapRoute(
"Forms",
"api/Forms/{Action}",
new { controller = "Lincare.Feature.Forms.Controllers.FormsController, Lincare.Feature.Forms", action = "Test" }
);
RouteTable.Routes.MapRoute("VirtualVisits", "api/VirtualVisits/{action}", new
{
action = "Find",
controller = "Lincare.Feature.Forms.Controllers.VirtualVisitsController, Lincare.Feature.Forms"
});
RouteTable.Routes.MapRoute("Recaptcha", "api/Recaptcha/{action}", new
{
action = "GetRecaptchaSiteKey",
controller = "Lincare.Feature.Forms.Controllers.RecaptchaController, Lincare.Feature.Forms"
});
}
}
}
And then controller.
using Lincare.Feature.Forms.Repositories;
using Sitecore.XA.Foundation.Mvc.Controllers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Lincare.Feature.Forms.Controllers
{
public class RecaptchaController : StandardController
{
private readonly IRecaptchaRepository _recaptchaRepository;
public RecaptchaController(IRecaptchaRepository recaptchaRepository)
{
_recaptchaRepository = recaptchaRepository ?? throw new ArgumentException(nameof(recaptchaRepository));
}
public ActionResult RecaptchaMeta()
{
string recaptchaSiteKey = _recaptchaRepository.GetRecaptchaSiteKey();
return View("/Views/Lincare/Forms/RecaptchaMeta.cshtml", recaptchaSiteKey);
}
[HttpGet]
public ActionResult GetRecaptchaSiteKey()
{
//return Json(new { key = _recaptchaRepository.GetRecaptchaSiteKey()}, JsonRequestBehavior.AllowGet);
return Json("test");
}
}
}
No comments:
Post a Comment