anomaly/contact-plugin
Contact plugin for Anomaly/PyroCMS built on the Streams Platform. It adds a configurable front-end contact form with validation, stores submissions, sends email notifications, and provides admin screens for reviewing entries and managing form settings. Use it to add a simple, manageable contact work...
composer require anomaly/contact-pluginphp artisan addon:list to confirm the addon was discovered, then install it with php artisan addon:install anomaly/contact-plugin (use the exact slug reported by addon:list).addon.json / composer.json inside the vendor directory first — it is the fastest way to confirm the addon slug, namespace, supported Streams Platform version, and whether migrations/seeders exist.resources/views/ — the contact form markup and the field names it posts.src/ — the plugin/module class, routes, and any submission handler or mailer.resources/config/ and resources/lang/ — recipient/settings keys and labels.routes.php / service provider — the actual form action URL and route name.MAIL_MAILER=log initially), set the recipient address in the addon settings or control panel, embed the form view on a page, submit a test message, and verify both the log entry and the redirect/confirmation behavior.{% include "anomaly.contact_plugin::form" %} or @include(...), depending on the registered view namespace). If a Twig function/tag is exposed by the plugin, prefer that over hardcoding an include path so upgrades are less likely to break your templates.name attributes identical unless you also update the handler/validation — the handler expects specific keys.Mail facade so your app's mailer/queue config applies. Wrap the send in a queued job if you expect volume; a synchronous send in the request cycle is the usual weak point.resources/lang files (or override them) so multi-language sites don't require template duplication.MAIL_MAILER=log plus a feature test that POSTs to the route with valid and invalid payloads, asserting validation errors and the redirect. This is the cheapest way to pin down behavior when documentation is absent.composer.json, read the source before relying on any behavior, and expect to own fixes. Check the last commit date and the Streams Platform constraint before upgrading your CMS.php artisan addon:list; a failed addon:install is usually a slug or namespace typo, not a code problem.addon:uninstall / addon:install cycles, which can drop data. Back up before reinstalling, and never reinstall on production casually.php artisan view:clear, then check the rendered source), and watch for a theme-level copy shadowing your app-level copy.action may be a named route or a hardcoded slug. After install, run php artisan route:list and grep for the contact route; if you change the page slug or embed the form elsewhere, hardcoded actions will silently 404 or post to the wrong place.log and smtp/Mailtrap before production. Set a real MAIL_FROM_ADDRESS on your domain, configure SPF/DKIM, and set a reply-to from the submitted email — otherwise notifications land in spam or replies go nowhere.throttle middleware) and a honeypot at minimum; CAPTCHA only if the traffic justifies the UX cost.storage/logs/laravel.log, php artisan route:list, php artisan addon:list, php artisan view:clear, and a manual POST via curl to isolate whether the failure is in routing, validation, or mail.composer update, and with this package there is no upstream momentum to get fixes merged.composer.json constraint; if it is unmaintained, budget for forking the package into addons/ and maintaining it locally.How can I help you explore Laravel packages today?