Admin-Editable Settings Without Complex Code
செயலிகள் (Apps) ஒரு தொடர்ச்சியான சிக்கலை எதிர்கொள்கின்றன. சில அமைப்புகள் .env கோப்பில் இருக்க வேண்டும். மற்ற அமைப்புகள், புதிய குறியீடு வெளியீடு (code deploy) இல்லாமலேயே ஒரு நிர்வாகி பேனல் (admin panel) மூலம் மாற்றப்பட வேண்டும். உதாரணத்திற்கு, தளத்தின் பெயர்கள் (site names), நேர மண்டலங்கள் (timezones) அல்லது பதிவு செய்யும் அமைப்புகள் (registration settings) ஆகியவற்றைக் கூறலாம்.
பல டெவலப்பர்கள் இவற்றைத் தரவுத்தளத்தில் (database) சேமிக்கிறார்கள், ஆனால் அது குழப்பத்தை ஏற்படுத்துகிறது. தரவைப் படிக்க இரண்டு வழிகள் உருவாகின்றன. உங்கள் செயலியின் ஒரு பகுதி config() ஐப் பயன்படுத்துகிறது, மற்றொரு பகுதி தரவுத்தள மாதிரியை (database model) பயன்படுத்துகிறது. இது அமைப்புகள் முரண்படும் (inconsistent) பிழைகளுக்கு (bugs) வழிவகுக்கிறது.
ஒரே ஒரு வாசிப்புப் பாதையை (single read path) பயன்படுத்துவதன் மூலம் இதைத் தவிர்க்கலாம். செயலி தொடங்கும் போது (boot), உங்கள் config மீது ஒரு அடுக்காக (layer) தரவுத்தளத்தைக் கருதுங்கள்.
இதை எவ்வாறு உருவாக்குவது என்பது இதோ:
• ஒரே ஒரு உண்மையான ஆதாரத்தைப் (single source of truth) பயன்படுத்துங்கள். தரவுத்தளம் மதிப்பைச் சேமித்து வைத்திருக்கும், ஆனால் செயலி config() வழியாக மட்டுமே அதை வாசிக்கும்.
• வகைப்படுத்தப்பட்ட வகுப்புகளைப் (typed classes) பயன்படுத்துங்கள். தளர்வான வரிசைகளுக்கு (loose arrays) பதிலாக, கண்டிப்பான வகைகளைக் (strict types) கொண்ட வகுப்புகளைப் பயன்படுத்துங்கள். இது எழுத்துப் பிழைகளையும் (typos) மற்றும் கண்டறிய முடியாத பிழைகளையும் (silent errors) தடுக்கிறது.
• செயலி தொடங்கும் செயல்பாட்டின் (boot process) போது அமைப்புகளை ஏற்றவும். தரவுத்தள மதிப்புகளைப் பெற்று அவற்றை config வரிசையில் (array) சேர்க்க ஒரு சேவை வழங்குநரைப் (service provider) பயன்படுத்துங்கள்.
இந்த இரண்டு தொழில்நுட்பத் தடைகளை (technical traps) கவனத்தில் கொள்ளுங்கள்:
நேர மண்டலத் தடை (The Timezone Trap) Laravel செயலி தொடங்கும் செயல்பாட்டின் ஆரம்பத்திலேயே நேர மண்டலத்தை அமைத்துவிடும். நீங்கள் பிறகு
configமதிப்பை மாற்றினால், PHP இன்னும் பழைய நேர மண்டலத்தையே பயன்படுத்தும். உலகளாவிய PHP அமைப்பை உங்கள் புதியconfigமதிப்புடன் ஒத்திசைக்க (sync), நீங்கள்date_default_timezone_set()ஐக் கைமுறையாக அழைக்க வேண்டும்.புதிய நிறுவல் தடை (The Fresh Install Trap) ஒரு புதிய செயலிக்குத் தரவுத்தள அட்டவணைகள் (database tables) இருக்காது. அமைப்புகள் அட்டவணை இல்லாததால் உங்கள் தொடக்கச் செயல்பாடு (boot process) தோல்வியடைந்தால், செயலி தொடங்காது. செயலி தொடங்கத் தவறினால் உங்களால் மைக்ரேஷன்களை (migrations) இயக்க முடியாது. உங்கள் அமைப்பு தர்க்கத்தை (settings logic) ஒரு
try/catchபிளாக்கிற்குள் (block) வையுங்கள். இது நீங்கள் மைக்ரேஷன்களை இயக்கும் வரை, செயலி.envஇயல்புநிலைக்கு (defaults) திரும்புவதற்கு அனுமதிக்கிறது.
பாதுகாப்பிற்கான மற்றொரு குறிப்பு:
பதிவு செய்தல் (registration) போன்ற ஒரு அம்சத்தை முடக்கும்போது, பயனர் இடைமுகத்தில் (UI) பொத்தானை மட்டும் மறைக்க வேண்டாம். அந்த அம்சத்தை config-லிருந்து முழுமையாக நீக்கிவிடுங்கள். நீங்கள் config-லிருந்து அம்சத்தை நீக்கினால், பாதைகள் (routes) மறைந்துவிடும். நேரடி எண்ட்-பாயிண்ட் (live endpoint) கொண்ட மறைக்கப்பட்ட படிவம் (form) ஒரு பாதுகாப்பு அபாயமாகும். இல்லாத ஒரு பாதை (missing route) 404 பிழையைத் தரும்.
உங்கள் குறியீட்டை எளிமையாக வைத்திருங்கள். ஒரு அமைப்பு கோப்பிலிருந்து வந்ததா அல்லது தரவுத்தளத்திலிருந்து வந்ததா என்பதை உங்கள் கன்ட்ரோலர்களும் (controllers) வியூஸ்களும் (views) அறியக்கூடாது. அவை config() ஐ மட்டுமே பார்க்க வேண்டும்.
Source: https://dev.to/nasrulhazim/admin-editable-settings-without-giving-up-config-2cj0
